终于快要放假了,一直看别的网站注册时使用邮箱验证激活,突然想自己写一个
初步想法是先将用户数据写入数据库,建立一个数据verify来判断是否验证通过,判断错误时,返回需要邮箱验证,发送邮件,点击链接后将verify写入验证通过,判断正确时,允许正常登陆。
先拿哔哩哔哩挂机哪个东西开刀实(zuo)验(si)~
进入数据库修改user表 添加verify 现在verify内全部用户数据都为空 也就是都还没有验证邮箱地址
修改登录操作,登录成功后检查verify是否等于1
$result = mysql->getOne(select verify from user where name = 用户名变量);//执行sql操作 if($result['verify']!=1){ header('Location:index.php?action=verify');//跳转到邮箱验证页面 exit(); }
邮箱验证未通过,跳转至验证页面,验证页面通过登录保存的cookie读取数据库mail数据,ajax发送验证邮件
$verify = $M->getOne("select mail,name from user where name = '".$XH->deStr($_COOKIE['name'])."' and pass = '".$XH->deStr($_COOKIE['pass'])."'");
mail函数等,发送验证邮件,我这里用的自己的发件API进行发送的
生成一个token值保存入verify内,作为验证凭证
$token = md5(time()); $mysql->query("UPDATE `user` SET `verify` = '".$token ."' WHERE `name` = '".$result['name']."';");
发送验证邮件 包含一个验证链接 携带正确的token参数
验证页面if语句判断token是否为正确的32位md5加密数据,如果是继续操作,如果找到该token对应的用户名则更新verify为1 验证通过
if(!empty($_GET['token'])){ if(strlen($_GET['token'])!='32'){ echo '<script type="text/javascript">'; echo 'alert("您的验证链接不正确,可能为邮箱问题,复制链接打开即可");'; echo 'window.location.href="https://bili.ihuan.me";'; echo '</script>'; exit(); } $verify = $mysql->getOne("select name from user where verify = '".$XH->deStr($_GET['token'])."'"); if(!empty($verify['name'])){ $M->query("UPDATE `user` SET `verify` = '1' WHERE `name` = '".$verify['name']."';"); echo '<script type="text/javascript">'; echo 'alert("邮箱验证已通过");'; echo 'window.location.href="https://bili.ihuan.me";'; echo '</script>'; exit(); }
这段直接扒的刚写的...
至此,验证就搞定了,说的似乎很是啰嗦,代码残次不全,仅为思路,仅供参考咯
具体效果可以看看哔哩哔哩挂机的邮箱验证,已修改完毕~
386812 278151For anybody who is interested in enviromentally friendly things, might possibly surprise for you the crooks to keep in mind that and earn under a holder merely because kind dissolved acquire various liters to essential oil to make. day-to-day deal livingsocial discount baltimore washington 313820
2018年8月15日 23:06160673 165505You made some initial rate factors there. I seemed on the internet for the difficulty and located most people will go along with together with your website. 359691
2018年8月14日 07:31不建议使用name字段。如果用的话要能保证name字段的唯一性。还有就是当数据量多的时候,查id比name快,因为有索引
2017年9月10日 21:43我那个程序写时候name是用户名,而且id字段…不存在的2333
2017年9月23日 21:23不错,学习了
2017年8月19日 18:22我弄的好吃力啊~ 勉强弄的差不多…
2017年7月18日 17:44。。。这个用个stmp接口就可以了吧!!设置个验证toke 在加个状态
2017年7月15日 19:17