本文为大家介绍下利用PHP
中GD库生成图形验证码而且带有汉字
具体的实现思路及代码如下
有需求的朋友可以参考下
希望对大家学习php有所帮助
利用PHP中GD库生成图形验证码
类似于下面这样
利用GD库函数生成图片并在图片上写指定字符
imagecreatetruecolor 新建一个真彩色图像
imagecolorallocate 为一幅图像分配颜色(调色板)
imagestring 绘制字符
imageline 绘制线条
imagesetpixel 打像素点
输出图片
imagejpeg($img);
PHP实现过程代码中注释详细这里不做过多解释
verifyphp
复制代码 代码如下:
<?php
//
qi启用gd库GD库提供了一系列用来处理图片的API
使用GD库可以处理图片
或者生成图片
// 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表
session_start();
// 把GBK编码的字符串转换成UTF
字符串
第一个参数之所以写GBK
是因为本php文件在主机中存储的编码是GBK编码
// UTF
编码浏览器普遍支持
通用性强
这里就转换成UTF
$str = iconv("GBK"
"utf
"
"芸芸众生绿水青山名胜古迹敞开心胸便会云蒸霞蔚快乐将永远伴随着你");
if(!is_string($str) || !mb_check_encoding($str
"utf
"))
{
exit("不是字符串或者不是utf
");
}
$zhongwenku_size;
// 按UTF
编码方式获取字符串的长度
$zhongwenku_size = mb_strlen($str
"UTF
");
// 把上述字符导入数组中
$zhongwenku = array();
for( $i=
; $i<$zhongwenku_size; $i++)
{
$zhongwenku[$i] = mb_substr($str
$i
"UTF
");
}
$result = "";
// 图片上要写入的四个字符
for($i=
; $i<
; $i++)
{
switch (rand(
))
{
case
:
$result
=$zhongwenku[rand(
$zhongwenku_size
)];
break;
case
:
$result
=dechex(rand(
));
break;
}
}
$_SESSION["check"] = $result;
// 创建一个真彩图片 宽
高
$img = imagecreatetruecolor(
);
// 分配背景颜色
$bg = imagecolorallocate($img
);
// 分配文字颜色
$te = imagecolorallocate($img
);
// 在图片上写字符串
//imagestring($img
rand(
)
rand(
)
rand(
)
$result
$te);
// 在图片上根据载入字体可以写出特殊字体
imagettftext($img
rand(
)
$te
"MSYH
TTF"
$result);
$_SESSION["check"] = $result;
for($i=
; $i<
; $i++)
{
// $t = imagecolorallocate($img
rand(
)
rand(
)
rand(
));
// 画线
imageline($img
rand(
)
rand(
)
rand(
)
$te);
}
$t = imagecolorallocate($img
rand(
)
rand(
)
rand(
));
// 为图片添加噪点
for($i=
; $i<
; $i++)
{
imagesetpixel($img
rand(
)
rand(
)
$t);
}
// 发送http头信息 指定本次发送的是image中的jpeg
header("Content
type: image/jpeg");
// 输出jpeg图片至浏览器
imagejpeg($img);
?>
submitphp
复制代码 代码如下:
<?php
session_start();
if(@$_POST[
check
])
{
if($_POST["check"] == $_SESSION["check"])
{
echo" 恭喜你!验证码输入正确!";
}else{
echo" 不好意思验证码输入错误";
}
}
?>
<form action="" method="post">
<img src="verify
php"/> </br>
<input type="text" name="check"></br>
<input type="submit" value="submit"></br>
</form>
代码中MRYHttf 是你要设置的字体