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 09 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
解决cPanel无法安装php5.2.17
Jun 22 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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
基于mysql的论坛(2)
2006/10/09 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
php微信支付接口开发程序
2016/08/02 PHP
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
记React connect的几种写法(小结)
2018/09/18 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
python中定义结构体的方法
2013/03/04 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
python编程使用协程并发的优缺点
2018/09/20 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
欢迎新生标语
2014/10/06 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
运动会班级前导词
2015/07/20 职场文书
《给予树》教学反思
2016/03/03 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python