• 技术文章 >后端开发 >php教程

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

    2016-05-27 10:34:14原创321
    本文实例为大家分享了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){  
        /* 记录登录SESSION */
        $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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP如何将XML转成数组_PHP 下一篇:PHP中file_exists使用中遇到的问题小结_PHP
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 怎样利用Dockerfile文件部署PHP项目• 什么是接口?如何在PHP中使用接口编写优雅的代码?• php7.2怎么连接oracle数据库?OCI8扩展的安装• php将csv文件导入到mysql数据库的方法,_PHP教程• smarty中post用法实例,smartypost实例_PHP教程
    1/1

    PHP中文网