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数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php判断访问IP的方法
Jun 19 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 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.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
js中replace的用法总结
2013/12/27 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python冒泡排序简单实现方法
2015/07/09 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
python微信撤回监测代码
2019/04/29 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
安全资金保障制度
2014/01/23 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
个人函授自我鉴定
2014/03/25 职场文书
机关会计岗位职责
2014/04/08 职场文书
家长会演讲稿
2014/04/26 职场文书
个人买房协议书范本
2014/10/06 职场文书
JavaScript 原型与原型链详情
2021/11/02 Javascript
cypress测试本地web应用
2022/06/01 Javascript