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 相关文章推荐
一个php作的文本留言本的例子(四)
Oct 09 PHP
mysql limit查询优化分析
Nov 12 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
Zend Framework常用校验器详解
Dec 09 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 PHP
php中yii框架实例用法
Dec 22 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实现httpclient类示例
2014/04/08 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
ajax java 实现自动完成功能
2012/12/19 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
js实现3D旋转相册
2020/08/02 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
vue监听键盘事件的相关总结
2021/01/29 Vue.js
Python列表推导式与生成器用法分析
2018/08/02 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
const和static readonly区别
2013/05/20 面试题
创业计划书怎样才能打动风投
2014/01/01 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
安全生产活动月方案
2014/03/09 职场文书
请假条的格式
2014/04/11 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
医学求职信
2014/05/28 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang