Thinkphp写ajax登录方法返回json_ThinkPHP

现在我们就来介绍一下如何使用Thinkphp来写登录方法,登录成功后通过ajaxReturn返回json数据。

登录的访法:

// 登录检测
    public function login() {
    	if(IS_POST){
			$ip		=	get_client_ip();
		    $time	=	time();

	        $username	= I('uname');
	        $password	= I('upass');

	        if(check_verify(I('verify_code'))){
	        	$this->ajaxReturn(0,"验证码错误!",0);
	        	$result = array('status'=>0, 'info'=>'验证码错误!');
    			$this->ajaxReturn($result);
	        }

	        $Admin = M('Admin');
	        $authInfo = $Admin->field()->getByUsername($username);
	        if(empty($authInfo)){
	        	$result = array('status'=>0, 'info'=>'改用户不存在!');
    			$this->ajaxReturn($result);
	        }else if($authInfo['password']!=password($password)){
	        	$result = array('status'=>0, 'info'=>'密码错误!');
    			$this->ajaxReturn($result);
	        }else if($authInfo['status']0, 'info'=>'该帐号已被禁封,如有问题请联系管理员!');
                $this->ajaxReturn($result);
            }else if($authInfo['status']==0){
                $result = array('status'=>0, 'info'=>'该帐号未激活,如有问题请联系管理员!');
                $this->ajaxReturn($result);
            }

            $_SESSION[C('USER_AUTH_KEY')]   =   $authInfo['id'];
            $admin = array();
            $admin['id'] = $authInfo['id'];
            $admin['roleid'] = $authInfo['role_id'];
            $admin['username'] = $authInfo['username'];
            $admin['nickname'] = $authInfo['nickname'];

            if($authInfo['username']=='admin') {
                $admin['administrator']      =   true;
            }
            session('liqingbo',$admin);

            //保存登录信息
            $Admin  =   M('Admin');
            $data = array();
            $data['id'] =   $authInfo['id'];
            $data['last_login_time']    =   NOW_TIME;
            $data['login_count']    =   array('exp','login_count+1');
            $data['last_login_ip']  =   get_client_ip();
            $Admin->save($data);

            /*$loginData['user_id'] = $authInfo['id'];
            $loginData['login_time'] = NOW_TIME;
            $loginData['login_ip'] = get_client_ip();
            M('LoginLog')->add($loginData);*/

	        $result = array('status'=>1, 'info'=>'正在登陆...', 'url'=>C('APP_PORTAL'));
        	$this->ajaxReturn($result);
    	}

    }

思路分析:首先通过IS_POST来判断是否是POST提交。

1、判断验证码是否正确

2、通过提交过来的用户名获取该用户名的信息

3、通过获取的用户信息和提交过来的密码加密后对比,如果匹配则密码正确,否则密码错误。

4、如果密码错误,且该用户没有被禁用或者有权限的情况下,将该用户信息通过SESSION方式保存到服务器上。

5、更新用户表上的对应用户信息,如登录次数、最后一次登录时间和IP地址。

6、如果是ajax登录,则通过ajax返回响应的json信息,如果是普通post提交,则返回响应的信息。

以上就是一个登录的基本流程思路了。大家也可以根据自己的需求加上自己想要的流程和功能,如有不明白的地方欢迎留言一起讨论。

下面附带登出,也就是退出的操作方法,大家也可以参考一下。

// 用户登出
    public function logout() {
        if(isset($_SESSION[C('USER_AUTH_KEY')])) {
            unset($_SESSION[C('USER_AUTH_KEY')]);
            unset($_SESSION);
            session_destroy();
            $this->success('登出成功!','/admin.php');
        }else {
            $this->error('已经登出!');
        }
    }

思路分析:直接注销登录时所保存的SESSION中的user_id,顺便通过session_destroy()来注销所有session信息。

form代码


    

        

                

  • 登录账号:
  •             

  •         

        

                

  • 登录密码:
  •             

  •         

        

                

  • 验证码:
  •             

  •  
  •         

    

加载js


js

温馨提示: 本文最后更新于2024-12-31 21:02:01,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 蚂蚁官方
© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容