thinkphp 3.2 通过邮件找回密码源码方法分享

浏览:1567 发布日期:2016/04/28 分类:技术分享
ThinkPHP交流QQ群 :484519446<span style="font-size:14px;">public function verify()
{
$type     =     isset($_GET['type'])?$_GET['type']:'gif';
import("@.ORG.Image");
Image::buildImageVerify(4,1,$type);
}

public function reset()
{
$username = $_GET['username'];
$key = $_GET['key'];
if(S($username) == $key)
{
$_SESSION[C('USER_NAME')] = $username;
//可以修改密码了跳转
}
else
{
showMsg('此重置密码链接无效,请确认后在试!','/');
}
}

public function getpasswd()
{

if(md5($_POST['verify'])    != $_SESSION['verify']) {
showMsg('验证码错误!');
}

$username = dhtml($_POST['name']);
$email = $_POST['email'];
$model = M('Clubber');
$map['user_name'] = $username;
$clubber = $model->;where($map)->;find();
if($clubber)
{
if($clubber['user_email'] == $email)
{
import("ORG.Net.Smtp");
$host = $_SERVER['HTTP_HOST'];
$key = md5(time());
$reset_url = "http://$host/index.php/Rpwd/reset/username/$username/key/$key";
$mail_body = "请点击以下链接重置密码,以便激活您的账号: <a href='$reset_url'>;$reset_url </a>;";
$smtp = new smtp(C('MAIL_SMTP'),25,true,C('MAIL_USER'),C('MALL_PWD'),C('MAIL_USER'));
$smtp->;debug = true;
if($smtp->;sendmail($email, C('MAIL_USER'), '好开始','好开始-重置密码',$mail_body,'HTML'))
{
S($username,$key);
$this->;display('success');
}
else
{
showMsg('服务器繁忙,请稍侯在试!');
}
}
else
{
showMsg('请重新输入邮箱,邮箱不正确!');
}
}
else
{
showMsg('此用户不存在!');
}
}</span>
查看详情

方法二

可以单独建立一个表(find_password) 来存用户找回密码的信息
id uid expTime(过期时间) ,code(加密字符串)
输入邮箱时先从数据库查找对于的uid,然后插入find_password表
发送邮件给用户 含有id 和 code
用户从邮件点击链接 形式如 getPassword.php?id=123&code=cdldlldkjnkdkkd
getPassword.php 先拿到 id 和 code 去表 find_password 查找
存在 并且没有过期则 允许用户输入新密码和确认密码,提交后记得 把 find_password 对应的记录删掉
欢迎大侠提供更好的解决方案~查看详情
最佳答案
评论( 相关
后面还有条评论,点击查看>>