Warning: Error while sending QUERY packet. PID=27502 in /home/wwwroot/coco/domain/cnlamp/web/wp-includes/wp-db.php on line 1924 thinkphp 修改默认验证码类可使用字体及设置字号 | LAMP新闻|技巧|经验|资讯站
现在的位置: 首页PHP>正文
thinkphp 修改默认验证码类可使用字体及设置字号
发表于7年前 PHP 暂无评论

thinkphp中默认的验证码类所生成的验证码图像中的字号最大为5号,并且无法使用字体,不太美观,而且在有些页面中需要大的验证码图像,因此,需要修改一下源码:

thinkphp框架目录下,打开Lib/ORG/Util/Image.class.php,将
buildImageVerify这个静态类替换为:

[code]
/**
+———————————————————-
* 生成图像验证码
+———————————————————-
* @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’);
$fontPath=THINK_PATH."/Common/elephant.ttf";
$randval = String::rand_string($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); //边框色
$pointColor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); //点颜色

@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++) {
$fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $fontcolor);
}
for ($i = 0; $i < 25; $i++) {
$fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pointColor);
}
$x = $width/$length;
for ($i = 0; $i < $length; $i++) {
//imagestring($im, 5, $i * 10 + 5, mt_rand(1, 8), $randval{$i}, $stringColor);
imagettftext($im, 20, rand(-30,30) ,$x*$i+5, $height/1.4, $stringColor, $fontPath,$randval{$i});
}
// @imagestring($im, 5, 5, 3, $randval, $stringColor);
Image::output($im, $type);
}
[/code]

$fontPath变量为图片的路径,我选择的是thinkphp框架下的Common下,可以根据自己的要求修改。

字体:elephant.ttf的下载地址:
http://115.com/file/cloj9aem#elephant.ttf

给我留言

留言无头像?


×
腾讯微博