这里有新鲜出炉的精品教程,程序狗速度看过来!
ThinkPHP 是一个开源的 PHP 框架,是为了简化企业级应用开发和敏捷 web 应用开发而诞生的。ThinkPHP 可以支持 windows/Unix/Liunx 等服务器环境,正式版需要 PHP5.0 以上版本支持,支持 MySql、PgSQL、Sqlite 以及 PDO 等多种数据库
这篇文章主要介绍了 thinkPHP 中验证码的简单实现方法, 结合实例形式分析了 thinkPHP 验证码的实现原理、步骤与调用技巧, 需要的朋友可以参考下
本文实例讲述了 thinkPHP 中验证码的简单实现方法。分享给大家供大家参考,具体如下:
运行效果图如下:
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. 页面端
- <img id="verifyImg" src="{sh::U('Agent/Login/verify')}" onClick="changeVerify()" title="点击刷新验证码" /></div>
直接 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('验证码错误!');
- }
希望本文所述对大家基于 ThinkPHP 框架的 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0828/340938.html