应用实例――图形验证码
下面Haohappy将给出一个应用实例,那就是大家都非常熟悉的图形验证码。虽然只是一个简单的例子,却是一个完整的验证码程序的核心部份。思路是采用随机的背景图,再用不同的颜色写上随机字符串。
首先,我们准备三个图形背景文件,分别命名为bg1.png,bg2.png,bg3.png,放在images目录下。
代码如下:
ImageCode.php<?php
require_once "Text/Password.php";
$string = Text_Password::create(10, 'pronounceable');
$num = rand(1,3);
header("Content-type: image/png");
$im = imagecreatefrompng("images/bg$num.png");
switch ($num) {
case 1:
$orange = imagecolorallocate($im, 253, 238, 227); //字体颜色
break;
case 2:
$orange = imagecolorallocate($im, 255, 204, 51);
break;
case 3:
$orange = imagecolorallocate($im, 255,255,200);
break;
}
$px = (imagesx($im) - 7.5 * strlen($string)) / 2; //位置
imagestring($im, 5, $px-3, 2, $string, $orange); //写上随机字符串
imagepng($im);
imagedestroy($im);
?>
运行结果如下:
左图为随机码类型pronounceable,右图为unpronounceable
使用Text_Password的好处就在这里,可以非常方便地使用你想要的随机码类型。
程序非常简单,只有二十多行,但功能算是相当强大,想使用程序进行边缘识别不那么容易,安全性较高。
至少比腾讯网站上QQ免费注册的那个验证码强多了:) 当然你也可以再加入随机杂点,画线,使用随机字体,颜色,旋转等等(如果有必要的话)。你可以在网页中加入<IMAGE SRC='imagetest2.php'>来引用该验证码,配合Session,就可以在用户登录时进行图形验证码认证。具体不详述,没什么难度。
如果对几个图像函数不熟悉,请自行查阅PHP手册。
参考资料:
End-user Documentation and API documentation of PEAR::Text_Password