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+mysql保存和输出文件
Oct 09 PHP
我的论坛源代码(一)
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP微商城开源代码实例
Mar 27 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 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设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Convert Seconds To Hours
2007/06/16 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
python实现随机梯度下降法
2020/03/24 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
统计系教授推荐信
2014/02/28 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
增员口号大全
2014/06/18 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
房产协议书范本2014
2014/09/30 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
本科毕业论文指导教师评语
2014/12/30 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
KVM基础命令详解
2022/04/30 Servers