PHP邮箱激活逻辑

1. 在reg.php注册页面 保存一个唯一标识符active
//$_SESSION['active'] = sha1(uniqid(rand(),true)); //创建一个安全的唯一标识激活码

2. 通过js验证成功后 在add_user.php页面新增完用户后 通过json函数包装数组 返回两个数据个前端js
I 第一个数据为 $success['_affected_rows'] = mysql_affected_rows();为新增用户成功的信息(激活码也存到数据库)
II 第二个数据 $success['active'] = $_SESSION['active']; 通过会话控制获取服务器上的$_SESSION['active']激活码
III echo json_encode($success); 返回数据(一个json解析的字符串)给前端js解析

3. 前端js解析新增用户成功返回的数据
var json = JSON.parse(response); 通过JSON.parse 解析数据
I json['_affected_rows'] 通过判断该数据大于0 提示用户注册成功
II window.location.href = "active.php?active=" + json['active'];
// 1.5秒后 跳转到激活active.php页面(实际项目发送到用户邮箱) 并且将js解析的激活码发送出去

4. 在active.php页面上做一个超链接 通过此链接来判断用户是否激活
I. html上加超链接 <a href="active.php?action=ok&active=<?php echo $_GET['active']?>"><?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=ok&active=".$_GET['active'] ?></a>
// 用户点击html上的超链接时 还是发送到当前的active.php页面 不同的是通过地址栏添加了?=action=ok变量参数
II. 当用户点了超链接后 if (isset($_GET['action']) && isset($_GET['active']) && $_GET['action'] == 'ok' )
//通过isset($_GET['action'] 判断该参数变量是否存在 来验证用户是否激活
III. 用户成功点击激活后 需要进入数据库中进行一系列操作
select * from guest_user where active = '{$_GET['active']}' limit 1
//查询客户的激活码是否存在数据库中 如果存在 再进行删除激活码操作
if(@mysql_num_rows($result) > 0){
$querydelete = "update guest_user set active = NULL where active = '{$_GET['active']}' limit 1";
$resultadlete = mysql_query($querydelete) or die('sql错误'.mysql_error());
if(mysql_affected_rows() > 0){
echo "<script>alert('帐户激活成功!');window.location.href ='login.php'</script>";
mysql_close();
}
}
//删除激活码 并且判断删除后 数据库影响的数据大于0 则告诉用户 帐户激活成功!

posted @ 2016-07-18 22:25  无敌秋秋  阅读(915)  评论(0编辑  收藏  举报