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怎样调用MSSQL的存储过程
Oct 09 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
PHP的基本常识小结
Jul 05 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
php随机取mysql记录方法小结
Dec 27 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
深入PHP数据加密详解
2013/06/18 PHP
php备份数据库类分享
2015/04/14 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
PHP 错误处理机制
2015/07/06 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
JavaScript作用域链示例分享
2014/05/27 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
外贸业务员求职自荐信分享
2013/09/21 职场文书
银行出纳岗位职责
2013/11/25 职场文书
自我评价的写作规则
2014/01/06 职场文书
考博专家推荐信
2014/05/10 职场文书
委托书怎么写
2014/07/31 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS