thinkphp3.2 注册激活账号 密码找回实现
主要说下激活账号和密码找回的思路:
激活账号 我是这样做的 注册的时候 给一个激活码
$jhm=$reg->jhm=time().$reg->email;
$url="http://$host/Member/regjhm/jhm/".base64_encode($jhm); //拼接$url; 将这个激活码存入数据库 发送邮件的时候 将激活的地址发到会员的邮箱:
如图:
会员点击这个链接进行激活
找回密码同样的将url 发送到会员的邮箱
如图:
下面贴出关键代码:
public function register(){ //会员注册
if(IS_POST){
$reg=M('Member');
if($reg->create()){
$reg->create_time=time();
$host = $_SERVER['HTTP_HOST']; //网址
$jhm=$reg->jhm=time().$reg->email;
$url="http://$host/Member/regjhm/jhm/".base64_encode($jhm); //拼接$url;
if(sendMail($reg->email,$reg->name,$reg->pwd,$url)){
$reg->pwd=md5($reg->pwd); //加密存入数据库
$data=$reg->add();
}else{
$this->error('邮件发送失败!');
}
if($data !==false){
echo 1;
}else{
echo 0;
}
}else{
$this->error($res->getError());
}
}else{
$this->display();
}
}
激活:
public function regjhm($jhm){ // 对比激活码如果一致则提示激活成功,那么现在激活码就没用了清除数据库的激活码字段
//base64_decode($jhm);
$member=M('Member');
$jhm=base64_decode($jhm); //解密
$data=$member->where()->getField('jhm'); //对比
if($data){
$res=$member->where(array('jhm'=>$jhm))->setField('jhm',''); //清空这里清空到登录的时候有个用处登录通过激活码是否存在不存在表示激活了存在表示没激活
if($res){
$this->success('账号激活成功!',U('Member/login'));
}else{
$this->error('账号激活失败!');
}
}else{
$this->error('账号已经激活!',U('Member/login'));
}
}
密码重置:
public function resetpwd($email){
$member=M('Member');
$pwd=md5(I('pwd'));
if(IS_POST){
$data=$member->where(array('email'=>$email))->setField('pwd',$pwd); //更新密码
if($data !==false){
echo 1;
}else{
echo 0;
}
}else{
//print_r($email);
//exit;
$email=base64_decode($email);
$this->email=$email;
$this->display();
}
}
AD:真正免费,域名+虚机+企业邮箱=0元