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 模板高级篇总结
Dec 21 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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
德生PL330的评价与改造
2021/03/02 无线电
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
Python文件去除注释的方法
2015/05/25 Python
Python验证码识别处理实例
2015/12/28 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
异步传递消息系统的作用
2016/05/01 面试题
介绍一下Java的事务处理
2012/12/07 面试题
销售员个人求职的自我评价
2014/02/10 职场文书
财务管理专业求职信
2014/06/11 职场文书
车辆转让协议书
2014/09/24 职场文书
安全先进班组材料
2014/12/26 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
党员自我评价范文2015
2015/03/03 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis