ホームページ > php教程 > PHP源码 > thinkphp フレームワークの下でログイン、登録、パスワード取得機能を実装します。

thinkphp フレームワークの下でログイン、登録、パスワード取得機能を実装します。

大家讲道理
リリース: 2016-11-08 13:38:07
オリジナル
1539 人が閲覧しました

この記事では主に、thinkphp フレームワークでのログイン、登録、パスワード取得機能に関する関連情報を紹介します。興味のある方は参照してください。

この記事の例では、ajax フォームを使用して送信されたログインとパスワードを共有します。 thinkphp フレームワーク。登録とパスワードの取得を実装する方法、および登録ユーザーに必要なバックグラウンド レビュー。

ユーザーテーブルのフィールドは、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 プログラミングを学習しているすべての人に役立ちます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート