您的位置:首页 > 编程语言 > PHP开发

thinkphp3.2 验证码生成和刷新验证码

2016-02-02 16:42 666 查看
一、实例化生成验证码的类(该方法放到IndexController里面便于访问)

<?php

/**
*
* 验证码生成
*/
public function verify_c(){
$Verify = new \Think\Verify();
$Verify->fontSize = 18;
$Verify->length   = 4;
$Verify->useNoise = false;
$Verify->codeSet = '0123456789';
$Verify->imageW = 130;
$Verify->imageH = 50;
//$Verify->expire = 600;
$Verify->entry();
}

?>


二、前台需要生成验证码的图片src属性指向

<div class="form-group">
<label for="password" class="col-sm-2 control-label">验证码</label>
<div class="col-sm-4">
<input type="text" class="form-control" name='verify' id="verify" placeholder="验证码">
</div>
<span onclick="changeverify()"><img width="30%" height="50" alt="验证码" id='verifyimg' src="__CONTROLLER__/verify_c" title="点击刷新"  style="cursor:pointer"></span>
</div>


三、写完上面的后,页面初始化的验证码就可以出现了,下面要写的就是点击验证码图片后,刷新出新的验证码图片(通过jquery修改图片的src属性来完成,请求的处理函数一样,只是在请求后加一个随机数,区别上一张图片的请求)

function changeverify(){
var verifyimg = $("#verifyimg").attr("src");

$("#verifyimg").attr("src", "__CONTROLLER__/verify_c/"+Math.random());

}


四、校验验证码输入是否正确

a.在common目录下的function.php里加入全局函数

<?php

/**
* 验证码检查
*/
function check_verify($code, $id = ""){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}

?>


b.在表单提交的controller对应的处理方法里添加检查代码(登录验证)

public function dologin(){
//var_dump($_POST);
session_start();
$userName =$_POST['username'];
$passWord =$_POST['password'];
//根据username获取数据库中匹配的信息
$User = M('userd');//表名
$userInfo = $User->where('username="%s"',$userName)->find();
$verify = I('param.verify','');

$_SESSION['user']=$userName;
if($userName == $userInfo['username'] && md5(md5($passWord).$userInfo['salt']) == $userInfo['userpass']){
if(!check_verify($verify)){
// $this->error("亲,验证码输错了哦!",$this->site_url,9);
$this->assign('loginInfo','亲,验证码错了啊啊啊啊');
$this->tologin();
} else {
//   redirect(U('User/Usercenter/index'));
$this->tobbs();

}
}else{
$this->assign('loginInfo','登录失败,用户名或密码错误');
$this->tologin();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp 验证码