利用PHP怎么实现一个邮箱验证激活功能

  介绍

本篇文章给大家分享的是有关利用PHP怎么实现一个邮箱验证激活功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<>强业务流程

1,用户提交注册信息。

2,写入数据库,此时帐号状态未激活。

3,将用户名密码或其他标识字符加密构造成激活识别码(你也可以叫激活码)。

4,将构造好的激活识别码组成URL发送到用户提交的邮箱。

5,用户登录邮箱并点击URL,进行激活。

6,验证激活识别码,如果正确则激活帐号。

<强>准备数据表

用户信息表中字段电子邮件很重要,它可以用来验证用户,找回密码,甚至对网站方来说可以用来收集用户信息进行邮件营销,以下是用户信息表t_user的表结构:

CREATE  TABLE  IF  NOT  EXISTS “t_user”, (,   ,“id”int (11), NOT  NULL  AUTO_INCREMENT,,   ,“用户名”varchar (30), NOT  NULL  COMMENT  & # 39;用户名& # 39;,,   ,“密码”varchar (32), NOT  NULL  COMMENT  & # 39;密码& # 39;,,   ,“电子邮件”varchar (30), NOT  NULL  COMMENT  & # 39;邮箱& # 39;,,   ,“令牌”varchar (50), NOT  NULL  COMMENT  & # 39;帐号激活码& # 39;,,   ,‘token_exptime int (10), NOT  NULL  COMMENT  & # 39;激活码有效期& # 39;,,   ,“地位”非常小的整数(1),NOT  NULL  DEFAULT  & # 39; 0 & # 39;, COMMENT  & # 39;状态,0 -未激活,1 -已激活& # 39;,,   ,‘regtime int (10), NOT  NULL  COMMENT  & # 39;注册时间& # 39;,,   ,PRIMARY  KEY  (id),   ),引擎=MyISAM  DEFAULT  CHARSET=use utf8;

在页面中放置一个注册表单,用户可以输入注册信息,包括用户名:密码和邮箱。

& lt; form  id=皉eg", action=皉egister.php",方法=皃ost"祝辞,   & lt;才能p>用户名:& lt; input 类型=皌ext",类=癷nput", name=皍sername", id=皍ser"祝辞& lt;/p>,   & lt;才能p>密,码:& lt; input 类型=皃assword",类=癷nput", name=皃assword", id=皃ass"祝辞& lt;/p>,   & lt;才能p>电子邮件:& lt; input 类型=皌ext",类=癷nput", name=癳mail", id=癳mail"祝辞& lt;/p>,   & lt;才能p> & lt; input 类型=皊ubmit",类=癰tn",价值=https://www.yisu.com/zixun/碧峤蛔⒉?>

  

对于用户的输入要进行必要的前端验证,关于表单验证功能,建议您参考本站文章:实例讲解表单验证插件验证的应用,本文对前端验证代码略过,另外其实页面中还应该有个要求用户重复输入密码的输入框,一时偷懒就此略过。

register.php

用户将注册信息提交到register.php进行处理.register.php需要完成写入数据和发送邮件两大功能。

首先包含必要的两个文件,connect.php和smtp.class.php,这两个文件在外面提供的下载包里有,欢迎下载。

include_once (“connect.php");//连接数据库
include_once (“smtp.class.php");//邮件发送类

然后我们要过滤用户提交的信息,并验证用户名是否存在(前端也可以验证)。

username 美元;=,stripslashes(修剪($ _POST[& # 39;用户名# 39;])),,   $ query =, mysql_query (“select  id 得到t_user  where 用户名=& # 39;用户名# 39;美元“),,   num 美元;=,mysql_num_rows(查询),,   如果(num==1美元){,   echo 才能;& # 39;用户名已存在,请换个其他的用户名& # 39;,,   ,,退出;   }

接着我们将用户密码加密,构造激活识别码:

$密码=md5(修剪($ _POST[& # 39;密码# 39;]));//加密密码
邮件=削减美元($ _POST[& # 39;电子邮件# 39;]);//邮箱
$ regtime=时间();
标记美元=md5(用户名,密码。regtime美元美元);//创建用于激活识别码
$ token_exptime=() + 60 * 60 * 24;//过期时间为24小时后
$ sql=安迦搿皌_user”(“用户名”,“密码”,“电子邮件”,“令牌”,“token_exptime”、“regtime”)
值(& # 39;用户名# 39;美元,& # 39;密码# 39;美元,& # 39;电子邮件# 39;美元,& # 39;标记# 39;美元,& # 39;token_exptime& # 39;美元,& # 39;regtime& # 39;美元)“;
mysql_query ($ sql);

上述代码中,美元令牌即构造好的激活识别码,它是由用户名:密码和当前时间组成并md5加密得来的。美元token_exptime用于设置激活链接URL的过期时间,用户在这个时间段内可以激活帐号,本例设置的是24小时内激活有效。最后将这些字段插入到数据表t_user中。

利用PHP怎么实现一个邮箱验证激活功能