Maison >php教程 >PHP源码 >thinkphp框架下实现登录、注册、找回密码功能

thinkphp框架下实现登录、注册、找回密码功能

大家讲道理
大家讲道理original
2016-11-08 13:38:071553parcourir

这篇文章主要介绍了thinkphp框架下实现登录、注册、找回密码功能的相关资料,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了thinkphp框架下使用ajax表单提交的登录、注册、找密码的实现方法,以及注册后的用户需后台审核。

user表的字段为id、num、password、name、email、addtime、status

具体代码如下

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
  //处理登录
  public function signin(){ 
    if(IS_GET){ 
      $this->display();
    } 
    if(IS_POST){
      /* 调用登录接口登录 */
      $User = M(&#39;user&#39;) ;  
      //I方法接收页面传递来的值
      $num = I(&#39;num&#39;) ; 
      $password = I(&#39;password&#39;) ;
      //查找user表中num等于$num的值
      $datanum = $User->where(array(&#39;num&#39;=>$num))->find();
      //判断$datanum的值
      if ($datanum){
        if (md5($password) === $datanum[&#39;password&#39;]) { 
          if ($datanum[&#39;status&#39;] == 0) {
            $this->error(&#39;用户处于未审核状态,请联系管理员&#39;);
          }elseif($datanum[&#39;status&#39;] == 2){
            $this->error(&#39;用户处于禁用状态,请联系管理员&#39;);
          }else{
            $this->autoLogin($datanum) ; //调用私有方法自动登录. 
            $uid = $datanum[&#39;id&#39;];
            if($_SESSION[&#39;user_auth&#39;][&#39;uid&#39;] && $_SESSION[&#39;user_auth&#39;][&#39;role&#39;] == &#39;user&#39;){
              $this->success(&#39;登录成功!&#39;, U(&#39;Index/index&#39;));
            }else{
              $this->error(&#39;存储错误.&#39;);
            }
          }
        }else{
          $this->error(&#39;密码填写不正确,请重新填写&#39;); 
          exit();
        }
      }else{
        $this->error(&#39;用户不存在,请注册&#39;,U(&#39;signup&#39;));
      }
    }
  }
 
  public function autoLogin($user){  
    /* 记录登录SESSION */
    $auth = array(
      &#39;uid&#39;       => $user[&#39;id&#39;],
      &#39;num&#39;    => $user[&#39;num&#39;], 
      &#39;role&#39;      => &#39;user&#39; , //记录用户类型 
    );
    session(&#39;user_auth&#39;, $auth);
    session(&#39;user_auth_sign&#39;, data_auth_sign($auth)); 
  }
 
  /*
  * 用户注册 
  */
  public function signup(){
    if(is_user_login()){
      $this->redirect(&#39;Index/index&#39;);
    }
    if(IS_GET){
      //注册页面
      $this->display();
    }
    if(IS_POST){
      //判断用户 
      $data[&#39;num&#39;] = I(&#39;num&#39;) ; 
      $User = M(&#39;user&#39;) ;
      $datanum = $User->where($data)->find();
      if ($datanum){
        $this->success(&#39;您已经注册过,请直接登录&#39;,U(&#39;signin&#39;));
      }else{
        $data[&#39;password&#39;] = md5(I(&#39;password&#39;)); 
        $data[&#39;name&#39;]  = I(&#39;name&#39;);
        $data[&#39;email&#39;]  = I(&#39;email&#39;);
        $data[&#39;addtime&#39;] = time();
        $uid = $User->add($data);
        if($uid) 
          $this->success(&#39;注册成功&#39;,U(&#39;signin&#39;)) ; 
        else  
          $this->error(&#39;注册失败&#39;) ; 
      }
    }
  }
 
  public function logout(){
    if(is_user_login()){
      $User = M(&#39;user&#39;) ;
      session(&#39;user_auth&#39;, null);
      session(&#39;user_auth_sign&#39;, null);
      session(&#39;[destroy]&#39;);
      $this->success(&#39;登出成功!&#39;, U(&#39;signin&#39;));
    } else {
      $this->redirect(&#39;signin&#39;);
    }
  }
 
  //忘记密码
  public function wjpas(){ 
    if(IS_GET){ 
      $this->display();
    } 
    if(IS_POST){
      $User = M(&#39;user&#39;) ;
      $num = I(&#39;num&#39;) ;
      $data[&#39;password&#39;] = md5(I(&#39;password&#39;)) ; 
      $email = I(&#39;email&#39;) ;
      $datanum = $User->where(array(&#39;num&#39;=>$num))->find();
      if ($datanum){
        if ($email === $datanum[&#39;email&#39;]) {
          $User->where(array(&#39;num&#39;=>$num))->save($data); // 根据条件更新记录
          $this->success(&#39;密码修改成功&#39;,U(&#39;signin&#39;)) ; 
        }else{
          $this->error(&#39;邮箱填写不正确,请重新填写&#39;); 
          exit();
        }
      }else{
        $this->error(&#39;用户不存在,请注册&#39;,U(&#39;signup&#39;));
      }
    }
  }
}
?>

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn