博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp中的验证码的实现
阅读量:6673 次
发布时间:2019-06-25

本文共 2256 字,大约阅读时间需要 7 分钟。

1.php端生成验证码函数

public function verify(){        // 验证码        import("@.Util.Image");        Image::buildImageVerify(4,1,'png',40,20,'verify');    }
/**     * 生成图像验证码     * @static     * @access public     * @param string $length  位数     * @param string $mode  类型     * @param string $type 图像格式     * @param string $width  宽度     * @param string $height  高度     * @return string     */    static function buildImageVerify($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify') {        import('ORG.Util.String');        $randval = String::randString($length, $mode);        session($verifyName, md5($randval));        $width = ($length * 10 + 10) > $width ? $length * 10 + 10 : $width;        if ($type != 'gif' && function_exists('imagecreatetruecolor')) {            $im = imagecreatetruecolor($width, $height);        } else {            $im = imagecreate($width, $height);        }        $r = Array(225, 255, 255, 223);        $g = Array(225, 236, 237, 255);        $b = Array(225, 236, 166, 125);        $key = mt_rand(0, 3);        $backColor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]);    //背景色(随机)        $borderColor = imagecolorallocate($im, 100, 100, 100);                    //边框色        imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor);        imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor);        $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));        // 干扰        for ($i = 0; $i < 10; $i++) {            imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $stringColor);        }        for ($i = 0; $i < 25; $i++) {            imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $stringColor);        }        for ($i = 0; $i < $length; $i++) {            imagestring($im, 5, $i * 10 + 5, mt_rand(1, 8), $randval{$i}, $stringColor);        }        Image::output($im, $type);    }

生成图片的同时,传入到session中。

2.页面端

直接src中调用。

点击触发改变。

function changeVerify(){ verifyURL = "{sh::U('Agent/Login/verify')}"; $("#verifyImg").attr("src",verifyURL); return false;}

 

3.后台验证,对比post字段与session中的验证码是否一致。

if($_SESSION['verify'] != md5($_POST['verify'])) {    $this->error('验证码错误!');}

 

转载地址:http://jhrxo.baihongyu.com/

你可能感兴趣的文章
Project Euler Problem 32 Pandigital products
查看>>
HDU1205 吃糖果【水题】
查看>>
扩展欧几里得算法与模乘逆元的程序
查看>>
《转》对数组的一些理解
查看>>
js 原型链解密
查看>>
“深入理解”—选择排序算法
查看>>
React-Native-Android-Studio整合开发+环境配置+官方实例
查看>>
System.out.println()的含义
查看>>
模仿jquery框架源码---网络
查看>>
php异常处理类
查看>>
异步加载图片Universal-Image-Loader
查看>>
readhat6.5下安装weblogic10.3.6
查看>>
MVC中业务层是否应该有个基类?它有什么作用?
查看>>
UNIX常见命令索引 (echo,find,xargs)
查看>>
第二周(4.23~4.29)
查看>>
spring(5)注解
查看>>
android 项目更改包名的方法
查看>>
fatal error LNK1123: 转换到 COFF 期间失败
查看>>
leetcode Isomorphic Strings
查看>>
selenimu一些使用注意点
查看>>