天天看點

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('user') ;  

      //I方法接收頁面傳遞來的值

      $num = I('num') ; 

      $password = I('password') ;

      //查找user表中num等于$num的值

      $datanum = $User->where(array('num'=>$num))->find();

      //判斷$datanum的值

      if ($datanum){

        if (md5($password) === $datanum['password']) { 

          if ($datanum['status'] == 0) {

            $this->error('使用者處于未稽核狀态,請聯系管理者');

          }elseif($datanum['status'] == 2){

            $this->error('使用者處于禁用狀态,請聯系管理者');

          }else{

            $this->autoLogin($datanum) ; //調用私有方法自動登入. 

            $uid = $datanum['id'];

            if($_SESSION['user_auth']['uid'] && $_SESSION['user_auth']['role'] == 'user'){

              $this->success('登入成功!', U('Index/index'));

            }else{

              $this->error('存儲錯誤.');

            }

          }

        }else{

          $this->error('密碼填寫不正确,請重新填寫'); 

          exit();

        }

      }else{

        $this->error('使用者不存在,請注冊',U('signup'));

      }

    }

  }

  public function autoLogin($user){  

    $auth = array(

      'uid'       => $user['id'],

      'num'    => $user['num'], 

      'role'      => 'user' , //記錄使用者類型 

    );

    session('user_auth', $auth);

    session('user_auth_sign', data_auth_sign($auth)); 

  }

  public function signup(){

    if(is_user_login()){

      $this->redirect('Index/index');

    }

    if(IS_GET){

      //注冊頁面

      $this->display();

    }

    if(IS_POST){

      //判斷使用者 

      $data['num'] = I('num') ; 

      $User = M('user') ;

      $datanum = $User->where($data)->find();

      if ($datanum){

        $this->success('您已經注冊過,請直接登入',U('signin'));

      }else{

        $data['password'] = md5(I('password')); 

        $data['name']  = I('name');

        $data['email']  = I('email');

        $data['addtime'] = time();

        $uid = $User->add($data);

        if($uid) 

          $this->success('注冊成功',U('signin')) ; 

        else  

          $this->error('注冊失敗') ; 

      }

    }

  }

  public function logout(){

    if(is_user_login()){

      $User = M('user') ;

      session('user_auth', null);

      session('user_auth_sign', null);

      session('[destroy]');

      $this->success('登出成功!', U('signin'));

    } else {

      $this->redirect('signin');

    }

  }

  //忘記密碼

  public function wjpas(){ 

    if(IS_GET){ 

      $this->display();

    } 

    if(IS_POST){

      $User = M('user') ;

      $num = I('num') ;

      $data['password'] = md5(I('password')) ; 

      $email = I('email') ;

      $datanum = $User->where(array('num'=>$num))->find();

      if ($datanum){

        if ($email === $datanum['email']) {

          $User->where(array('num'=>$num))->save($data); // 根據條件更新記錄

          $this->success('密碼修改成功',U('signin')) ; 

        }else{

          $this->error('郵箱填寫不正确,請重新填寫'); 

          exit();

        }

      }else{

        $this->error('使用者不存在,請注冊',U('signup'));

      }

    }

  }

}

?>

以上就是本文的全部内容,希望對大家學習php程式設計有所幫助。