thinkphp框架下实现登录、注册、找回密码功能_php技巧

本文实例为大家分享了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程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索登录
, thinkphp
, 注册
找密码
thinkphp框架、thinkphp微信开发框架、thinkphp框架下载、thinkphp框架教程、thinkphp框架面试题,以便于您获取更多的相关知识。

时间: 2024-10-28 12:44:25

thinkphp框架下实现登录、注册、找回密码功能_php技巧的相关文章

node.js的express框架下的登录注册

问题描述 node.js的express框架下的登录注册 注册页面没问题,能够成功注册新的账号,但是登录页面,输入账号密码后,却显示404! //这是我登录页面的app.js代码,哪里出问题了?我是按照网上教程做的,注册哪方面没问题,连的是MYSQL!! router.get('/login', function(req, res) { if(req.session.islogin){ res.locals.islogin=req.session.islogin; } if(req.cookie

php下尝试使用GraphicsMagick的缩略图功能_php技巧

常用的图片处理工具有GD,ImageMagick,GraphicsMagick等等.GD就是个阿斗,略过不提:ImageMagick是目前最流行的图片处理工具,它的功能非常丰富:GraphicsMagick的功能略逊于ImageMagick,但是它的效率更强悍,就好比Apache和Nginx一样,一个功能更强,一个效率更胜. 现在更看重效率,所以本文就以GraphicsMagick为例来说说: 对于PHPer来说,有两种使用GraphicsMagick的方式: 1:使用PECL Gmagick扩

PHP会员找回密码功能的简单实现

设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的"找回密码"超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3.系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678). 4.系统借助Jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名.临时密码.提醒用户及时修改临时密码的提示语). 5.用户用临时密码即可登录. HTML 我们在找回密码的

支付宝找回密码功能被曝有漏洞,账号安全受威胁

据1月26日消息,当天的CCTV新闻频道<东方时空>栏目主题为:<支付宝找回密码功能有漏洞账号安全受威胁>.该节目称,通过此前一次支付宝泄密事件导致的信息泄漏,不法分子寻找到受害人信息,并通过找回密码来获得用户支付宝访问权限,从而将支付宝的钱款转走. 以下是节目文字实录: 主持人:根据犯罪人的介绍,他们掌握了当事人的姓名.手机号码和身份证号码这些信息之后呢,就能通过支付宝来盗取这些人的银行卡内的存款,首先犯罪嫌疑人是根据事先从网上获取的当事人的个人信息伪造假的身份证,然后再利用假身

thinkphp框架下404页面设置 仅三步_php技巧

404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 在很多网站中都会有使用404页面的时候,在ThinkPHP框架中该如何设置呢,接下来我介绍其中一种方法,具体内容如下 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.class.php,其代码如下: <?php namespace HomeController; use ThinkController; class EmptyController ext

PHP会员找回密码功能实现实例介绍

设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名时,点击登录页面的"找回密码"超链接,打开表单,并输入注册用的E-MAIL邮箱,提交. 3.系统通过该邮箱,从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码(比如:12345678). 4.系统借助Jmail功能把该用户的信息发送到该用户的邮箱中(内容包括:用户名.临时密码.提醒用户及时修改临时密码的提示语). 5.用户用临时密码即可登录. HTML 我们在找回密码的

SSH集成框架下真正实现Spring AOP拦截功能

问题的提出: 在Struts1框架下,有三种类型的Action控制器,分别是MappingDispatchAction.DispatchAction和Action,他们是依次继承,最终执行的execute方法.但MappingDispatchAction.DispatchAction的子类中没有execute方法,只有参数指定的具体方法,而这些方法是被MappingDispatchAction.DispatchAction本类的execute方法调用执行,特别注意的是它是通过反射机制来做的(大家

Dwz与thinkphp整合下的数据导出到Excel实例_php实例

本文实例讲述了Dwz与thinkphp整合下的数据导出到Excel的方法.分享给大家供大家参考.具体方法如下: 这个问题困扰了我很久,终于还是自己写JQUERY把它搞掂了,希望能对遇到同样问题的人有所帮助,好吧,下面就是源代码: jquery代码如下: 复制代码 代码如下: $(function(){            //_getIds方法就是获取已选的要导出的数据的ID,设了两个参数selectedIds--已选id的input名称,targetType-->碎片模式,默认是navTab

SpringMVC实现通过邮件找回密码功能_java

最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url  加密能防止伪造攻击,一次url只能验证一次,并且绑定了用