首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》25.3.1 身份验证

关灯直达底部

登录功能一般是指用户输入用户名、密码以及验证码后,后台检测用户身份并放行进入主界面。在本项目的登录功能中,有3个输入框,分别是用户名、密码、验证码,以及一个登录按钮。页面代码如下。


 1 <p> 2     <p><p></p></p> 3     <p> 4         <ul> 5         <li><label>用户名:</label><input type="text"            name="username" size="16"></li> 6         <li><label>密码:</label><input type="password"  name=           "password" size="16"></li> 7         <li><label>验证码:</label><input name="verifycode"             size="4"  maxlength="4" /><img src="           {:url('checkVerify')}" onclick="javascript:this.src='{:url('checkVerify')}?           tm='+Math.random;"   title="重设" id=           "verifyImage"/></li> 8         <li><label></label><input type="submit"   /></li>  9         </ul>10     </p>11 </p>  

上述页面代码的效果如图25-3所示。

图25-3 登录界面

下面定义一个application/admin/validate/AdminValidate验证器类,用于管理员登录时的验证。其代码如下。


 1 namespace app/admin/validate; 2 use think/Validate; 3  4 class AdminValidate extends Validate 5 { 6     protected $rule = [ 7         ['username', 'require', '用户名不能为空'], 8         ['password', 'require', '密码不能为空'], 9         ['verifycode', 'require', '验证码不能为空']10     ];11 12 }  

上述验证器中,要求用户名、密码、验证码都不能为空。

执行登录函数为doLogin,实现代码如下。


 1 public function doLogin{ 2     $username = Request::instance->param('username'); 3     $password = Request::instance->param('password'); 4     $verifycode = Request::instance->param('verifycode'); 5  6     // 验证规则验证 7     $result = $this->validate(compact('username', 'password', "verifycode"), 'Admin-       Validate'); 8     if(true !== $result){ 9         $this->error($result);10     }11 12     // 检查验证码13     $verify = new Verify;14     if (!$verify->check($verifycode)) {15         $this->error('验证码错误');16     }17 18     // 检查用户名19     $hasUser = db('admin')->where('username', $username)->find;20     if(empty($hasUser)){21         $this->error('用户名或密码错误');22     }23 24     // 检查密码25     if(md5($password) != $hasUser['password']){26         $this->error('用户名或密码错误!');27     }28     Session::set('username',$username);29     $this->redirect('index/index');30 }  

执行登录时,首先接收用户提交的3个参数,然后调用validate类先进行非空验证,接下来依次检测验证码、用户名、密码是否正确。其中,密码使用MD5算法加密。3个参数都输入正确后,使用Session类将用户名写入session中,作为登录状态判断依据,并跳转到主界面。