现在很多网站注册都会要填写邮箱,而且需要收一封邮件激活才可以使用账户或者某些特殊功能,最近工作中有这样的需求,这里讲一下简单的实现方法:
思路分析
1. 做一个注册页面,必须有的是【邮箱】这一个输入框
2. 当表单信息填写完毕之后,发送到服务器端验证,当数据都合法之后,需要将数据成功插入到数据库(is_active=0)。然后可以获取到主键ID,然后发送邮件的时候,携带这个ID
发送内容 形如:http://local.12.com/index.php?id=122&a=checkEmail的链接地址
3. 当会员用户登录注册时候的邮箱,邮件中有一个链接地址(ID),点击跳转到页面(自己写的激活账号的代码文件地址)去激活对应ID的那个账号(把标志is_active设为1)。
4. 当用户去操作别的要权限的操作或者登陆时,就判断这个会员的is_active是否为1,如果为1 则可以操作,如果不是1 则提示用户去赶紧激活。
数据库
id 主键ID
username 用户名
pwd 密码(md5)
status 激活状态(0代表未激活 1代表激活)
email 用户注册邮箱
login.html
测试时候的表单,超级简陋
<html>
<body>
<h1>注册</h1>
<hr>
<form action="register.php" method="post" accept-charset="utf-8">
<span style="white-space:pre"> </span><p> 用户名:<input type="text " name='username' value="" /></p>
<span style="white-space:pre"> </span><p>密码:<input type="password" name="pwd" value="" /></p>
<span style="white-space:pre"> </span> <p>确认密码:<input type="password" name="pwd2" value="" /></p>
<span style="white-space:pre"> </span><p>邮箱:<input type="email" name="email" value="" /></p>
<span style="white-space:pre"> </span><p><input type="submit" name="submit" value="注册" /></p>
</form>
</body>
</html
提交的处理页面需要使用到发送邮件的phpmailer, 把class.phpmailer.php 和 class.smtp.php 文件放到项目中,然后需要改一下class.smtp.php
测试时用的是新浪,服务器是smtp.sina.com 同样的设这个就可以,注意一下要开启SMTP服务,在新浪邮箱设置中更改, 其他邮箱的就自己查一下吧。
在数据成功插入数据库之后调用class.smtp.php中的方法发送邮件(记得先引入文件或者把整个函数复制到处理页面)
最后在用户点击链接的文件中做激活用户操作即可
<?php
header("content-type:text/html;charset=utf-8");
$id = $_GET['id'];
$link = mysql_connect('localhost','root','root');
mysql_query('set names utf8');
mysql_query('use test');
$sql = "update users set staus = 1 where id = $id";
if(mysql_query($sql)){
echo "激活成功";
}else{
echo "激活失败,请稍后再试";
}
//echo $id;
?>