Verification code
There is still one step left before the login is completed, the verification code. The verification code can effectively prevent malicious login.
Verification code
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><!--Head--><head> <meta charset="utf-8"> <title>PHP中文网:交流群374224296</title> <meta name="description" content="login page"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--Basic Styles--> <link href="__PUBLIC__/style/bootstrap.css" rel="stylesheet"> <link href="__PUBLIC__/style/font-awesome.css" rel="stylesheet"> <!--Beyond styles--> <link id="beyond-link" href="__PUBLIC__/style/beyond.css" rel="stylesheet"> <link href="__PUBLIC__/style/demo.css" rel="stylesheet"> <link href="__PUBLIC__/style/animate.css" rel="stylesheet"> </head> <!--Head Ends--> <!--Body--> <body> <div class="login-container animated fadeInDown"> <form action="" method="post"> <div class="loginbox bg-white"> <div class="loginbox-title">登录</div> <div class="loginbox-textbox"> <input value="admin" class="form-control" placeholder="username" name="username" type="text"> </div> <div class="loginbox-textbox"> <input class="form-control" placeholder="password" name="password" type="password"> </div> <div class="loginbox-textbox"> <input class="form-control" style="width:120px; height:50px; float:left;" placeholder="验证码" name="verify" type="text"> <img src="__CONTROLLER__/verify" style="cursor:pointer;" height="50" width="100" border="0" > </div> <div class="loginbox-submit"> <input class="btn btn-primary btn-block" value="Login" type="submit"> </div> </div> <div class="logobox"> <p class="text-center">PHP中文网:交流群374224296</p> </div> </form> </div> <!--Basic Scripts--> <script src="__PUBLIC__/style/jquery.js"></script> <script src="__PUBLIC__/style/bootstrap.js"></script> <script src="__PUBLIC__/style/jquery_002.js"></script> <!--Beyond Scripts--> <script src="__PUBLIC__/style/beyond.js"></script> </body><!--Body Ends--></html>
LoginController.class.php
<?php namespace Admin\Controller; use Think\Controller; class LoginController extends Controller { public function index(){ $admin=D('admin'); if(IS_POST){ if($admin->create($_POST,4)){ if($admin->login()){ $this->success('登录成功,跳转中...',U('Index/index')); }else{ $this->error('用户名或者密码错误!'); } }else{ $this->error($admin->getError()); } return; } $this->display(); } public function verify(){ $Verify = new \Think\Verify(); $Verify->length=4; $Verify->entry(); } }
In the member’s model layer AdminModel.class.php
<?php namespace Admin\Model; use Think\Model; class AdminModel extends Model { protected $_validate = array( array('username','require','管理员名称不得为空!',1), array('password','require','管理员密码不得为空!',1,regex,1), array('username','','管理员名称已经存在!',1,'unique',1), array('username','','管理员名称已经存在!',1,'unique',2), array('verify','verify','验证码不正确!',1,'callback',4), ); public function login(){ $password=$this->password; $info=$this->where("username='$this->username'")->find(); if ($info){ if($info['password']=md5($password)){ return true; }else{ return false; } }else{ return false; } } public function verify($code){ $verify =new \Think\Verify(); return $verify->check($code,''); } }