是不是觉得普通的验证码已经没办法满足,接下来介绍如何将tp现有的验证码改为计算型验证码:
首先找到:ThinkPHP\Library\Think\Verify.class.php
在其中加入以下代码:
public function entry_add($id = '') { $this->length='3'; // 图片宽(px) $this->imageW || $this->imageW = $this->length*$this->fontSize*1.5 + $this->length*$this->fontSize/2; // 图片高(px) $this->imageH || $this->imageH = $this->fontSize * 2.5; // 建立一幅 $this->imageW x $this->imageH 的图像 $this->_image = imagecreate($this->imageW, $this->imageH); // 设置背景 imagecolorallocate($this->_image, $this->bg[0], $this->bg[1], $this->bg[2]); // 验证码字体随机颜色 $this->_color = imagecolorallocate($this->_image, mt_rand(1,150), mt_rand(1,150), mt_rand(1,150)); // 验证码使用随机字体 $ttfPath = dirname(__FILE__) . '/Verify/' . ($this->useZh "\$re=$str;"); $code = $this->authcode($re); $secode = array(); $secode['verify_code'] = $code; // 把校验码保存到session $secode['verify_time'] = NOW_TIME; // 验证码创建时间 session($key.$id, $secode); header('Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header("content-type: image/png"); // 输出图像 imagepng($this->_image); imagedestroy($this->_image); }
public function check_add($code, $id = '') { $key = $this->authcode($this->seKey).$id; // 验证码不能为空 $secode = session($key); if($code===false || empty($secode)) { return false; } //验证码是否是数字 if(!is_numeric($code)) { return false; } // session 过期 if(NOW_TIME - $secode['verify_time'] > $this->expire) { session($key, null); return false; } if($this->authcode($code) == $secode['verify_code']) { $this->reset && session($key, null); return true; } return false; }
生成方法:
Public function verify(){ import('ORG.Util.Verify'); $Verify = new Verify(); $Verify->useNoise = true; $Verify->codeSet = '0123456789'; $Verify->useCurve = false; $Verify->entry_add(); }
验证方法:
if (!check_verify($verify,'','add')) { $this->error('验证码错误!'); return; }
调用的公共方法:
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串 function check_verify($code, $id = '',$type=''){ import('ORG.Util.Verify'); $verify = new Verify(); if($type='add'){ return $verify->check_add($code, $id); } else{ return $verify->check($code, $id); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“Thinkphp3.2实用篇之计算型验证码示例”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。