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&amp;java(一)
Oct 09 PHP
投票管理程序
Oct 09 PHP
几个学习PHP的网址
Nov 25 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 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打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PDO::exec讲解
2019/01/28 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
下拉框select的绑定示例
2014/09/04 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
JavaScript动态绑定详解
2017/09/14 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python如何实现文本转语音
2016/08/08 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python地震数据可视化详解
2019/06/18 Python
解决Django连接db遇到的问题
2019/08/29 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python模块future用法原理详解
2020/01/20 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
班委竞选演讲稿
2014/04/28 职场文书
期中考试反思800字
2014/05/01 职场文书
法人委托书范本格式
2014/09/15 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
音乐剧猫观后感
2015/06/04 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书