说实在的php写页面的验证码其实大家不用去copy别人的,其实自己DIY也很容易的。
首先我们显得认识下php中内置的php_gd2库,总之对于我们开发人员来说就以足够。好了不闲扯了直接上图和操作步骤。
1、打开php.ini中的php_gd2库, 然后找到(;extension=php_gd2.dll),去掉前面的';'号即可。这样就是开始了我们的 DIY之路了。
2、进入php manual(手册)查询,image时,这么多函数我怎么看啊~ 。别急我们几天用到的函数不多.
3、找到imagecreatetruecolor函数直接看他的例子(入门)
$im = @imagecreatetruecolor(120, 20 )
or die('Cannot Initialize new GD image stream' );
$text_color = imagecolorallocate($im, 233, 14, 91 );
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color );
imagepng($im );
5、下面我来做个数字和字母并排4个字符的应用吧(应用)
上代码:
<?php
header("Content-type: image/png");
for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(0,15)) ;
}
$im = imagecreatetruecolor(100, 30) ;
$tcolor = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) ;
$c3 = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) ;
for($i=0;$i<200;$i++)
{
imagesetpixel($im, rand(0,100), rand(0,30), $c3) ;
}
$word = array("我的妈呀","哎呀","好吃啊","非常好");
for($i=00;$i<4;$i++)
{
//将字符的编码由GBK->utf-8
$word[$i] = iconv("gbk", "utf-8", $word[$i]) ;
}
imagettftext($im, 10, 0, 20, 15, $tcolor, "simkai.ttf", $word[rand(0,3)]) ;
imagepng($im);
?>
<?php
header("Content-type: image/png");
$im = imagecreatetruecolor(100, 30) ;
$tcolor = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) ;
$c2 = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) ;
$c3 = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) ;
for($i=0;$i<200;$i++)
{
// 画200个点 参数(背景,X坐标,y坐标,颜色) ;
imagesetpixel($im, rand(0,100), rand(0,30), $c3) ;
}
for($i=0;$i<3;$i++){
//画3条线 参数(背景,起始x,起始y,终点x,终点y,颜色) ;
imageline($im, rand(0,50), 0, 100, 30, $c2) ;
}
//中文字符数组
$word = array("我的妈呀","哎呀","好吃啊","非常好");
for($i=0;$i<4;$i++)
{
//将字符的编码由GBK->utf-8
$word[$i] = iconv("gbk", "utf-8", $word[$i]) ;
}
//将中文放入$im中 ,参数(背景,字符大小,偏转角度,起始x坐标,起始y坐标,字符的文件名(建议去windows系统的字体文件看看
//并复/制.。到本目录),接受的字符)
imagettftext($im, 10, 0, 20, 15, $tcolor, "simkai.ttf", $word[rand(0,3)]) ;
imagepng($im);
?>
结果: