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


Posted in PHP onApril 06, 2016

本文实例为大家分享了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程序设计有所帮助。

PHP 相关文章推荐
PHP has encountered an Access Violation
Jan 15 PHP
php中目录,文件操作详谈
Mar 19 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
PHP文件上传操作实例详解
Sep 27 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
laravel批量生成假数据的方法
Oct 09 PHP
非常有用的9个PHP代码片段
Apr 06 #PHP
10个对初学者非常有用的PHP技巧
Apr 06 #PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 #PHP
PHP实现的DES加密解密实例代码
Apr 06 #PHP
php使用正则验证中文
Apr 06 #PHP
php HTML无刷新提交表单
Apr 05 #PHP
PHP如何使用Memcached
Apr 05 #PHP
You might like
php读取xml实例代码
2010/01/28 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
php设计模式之委托模式
2016/02/13 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
python实现的阳历转阴历(农历)算法
2014/04/25 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python如何读写json数据
2018/03/21 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
数控专业自荐书范文
2014/03/16 职场文书
欢度春节标语
2014/07/01 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
信仰纪录片观后感
2015/06/08 职场文书