thinkphp自带验证码全面解析


Posted in PHP onSeptember 18, 2016

前端页面:

<div style="position:absolute;z-index:3;top:160px;left:180px;">
<img style="cursor:pointer; " src="{:U('Verify')}" onclick="this.src=this.src+'?'+Math.random()" id="safecode" style="height:50px;width:70%;"/>
</div> 
//验证码判断
public function Verify(){
ob_clean();
//显示验证码
$cfg=array(
'codeSet' => '0123456789', // 验证码字符集合
'imageH' => 25, // 验证码图片高度
'imageW' => 80, // 验证码图片宽度
'length' => 4, // 验证码位数
'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
'fontSize' => 10, // 验证码字体大小(px)
'useNoise' => false, // 是否添加杂点
'useCurve' => false, // 是否画混淆曲线
'bg' => array(226,229,236) //背景颜色
);
$very=new \Think\Verify($cfg);
$very->entry();
} 
//客户端通过ajax,实现校验验证码
public function checkVerify(){
$code = I('get.code');
$very = new \Think\Verify();
$key = $this->auth_my_code($very,$very->seKey);
// 验证码不能为空
$secode = session($key);
//对$code进行加密,在比较校验
if($this->auth_my_code($very,strtoupper($code)) == $secode['verify_code']) {
echo json_encode(array('flag'=>1,'cont'=>'验证码正确'));
}else{
echo json_encode(array('flag'=>2,'cont'=>'验证码错误'));
}
}
private function auth_my_code($vry,$str){
$key = substr(md5($vry->seKey), 5, 8);
$str = substr(md5($str), 8, 10);
return md5($key . $str);
}

以上验证码如果输入错误提交后不能自动刷新,对代码进行更改后:

location.href="/Login/Login";这样只能对整个页面刷新,提交表单的值可能会丢失,非常影响用户体验。

2.如果验证码输入错误,提交后自动刷新验证码。

else{
$('#safecode').attr("src","/Login/Verify?"+Math.random());
NewAlert(2,"验证码有误,请重新输入",null);
code_ok = false;
$('#verifyresult').html(msg.cont).css({'color':'red','font-size':'12px'}); 
}

3.以下为ajax提交验证码到后台校验:

<script type="text/javascript">
$("#login_btn").click(function(){
var username = $.trim($("#username").val());
var password = $.trim($("#password").val());
var code = $('#veri').val();
if(username == ""){
NewAlert(2,"请输入用户名",null);
shutdown();
return false;
}else if(password == ""){
NewAlert(2,"请输入密码",null);
shutdown();
return false;
}else if(code==''){
NewAlert(2,"请输入验证码",null);
return false;
}
//ajax去服务器端校验
$.ajax({
url:"__CONTROLLER__/checkVerify",
data:{'code':code},
dataType:'json',
success:function(msg){
if(msg.flag==1){
var data= {
username:username,
password:password
};
$.ajax({
type:"POST",
url:"{:U('Login/Login')}",
data:data,
dataType:"json",
success:function(msg){
if(msg.RespCode=='000'){
shutdown();
if(msg.org_code=='fcb'){
location.href="/Invest/index?biao_type=cwb";
}else{
location.href="{$Think.config.VIP_URL}/Individual/index";
}
}else{
NewAlert(2,msg.RespDesc,null);
return false;
}
},
error:function(){
shutdown();
},
beforeSend: function() {
Loading();
},
});
}else{
$('#safecode').attr("src","/Login/Verify?"+Math.random());
NewAlert(2,"验证码有误,请重新输入",null);
code_ok = false;
$('#verifyresult').html(msg.cont).css({'color':'red','font-size':'12px'}); 
}
}
});
}); 
</script>

以上所述是小编给大家介绍的thinkphp自带验证码全面解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP5+UTF8多文件上传类
Oct 17 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
深入PHP magic quotes的详解
Jun 17 PHP
php实现简单洗牌算法
Jun 18 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
preg_match_all使用心得分享
Jan 31 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
php自动加载方式集合
Apr 04 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 PHP
php操纵mysqli数据库的实现方法
Sep 18 #PHP
php微信公众账号开发之前五个坑(一)
Sep 18 #PHP
php中实现进程锁与多进程的方法
Sep 18 #PHP
注意!PHP 7中不要做的10件事
Sep 18 #PHP
深入理解PHP类的自动载入机制
Sep 16 #PHP
PHP实现链式操作的原理详解
Sep 16 #PHP
详解PHP中websocket的使用方法
Sep 15 #PHP
You might like
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
paypal即时到账php实现代码
2010/11/28 PHP
浅析php学习的路线图
2013/07/10 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
python笔记:mysql、redis操作方法
2017/06/28 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
django的csrf实现过程详解
2019/07/26 Python
Django 重写用户模型的实现
2019/07/29 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
请解释virtual关键字的含义
2015/06/17 面试题
领班岗位职责范文
2014/02/06 职场文书
音乐专业自荐信
2014/02/07 职场文书
公务员诚信承诺书
2014/05/26 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
高中军训的心得体会
2014/09/01 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers