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 相关文章推荐
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP访问Google Search API的方法
Mar 05 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 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
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php常见的页面跳转方法汇总
2015/04/15 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
基于python实现聊天室程序
2018/07/27 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
python内存管理机制原理详解
2019/08/12 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python 的topk算法实例
2020/04/02 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
新闻专业应届生求职信
2013/10/31 职场文书
综合实践活动方案
2014/02/14 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
恰同学少年观后感
2015/06/08 职场文书
学雷锋感言
2015/08/03 职场文书
聘用合同范本
2015/09/21 职场文书
初中美术教学反思
2016/02/17 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python