Easy DIY自己的页面验证码(php版)绝对原创

来源:互联网 发布:灵异网络剧 编辑:程序博客网 时间:2024/06/01 07:29

 

     说实在的php写页面的验证码其实大家不用去copy别人的,其实自己DIY也很容易的。

     首先我们显得认识下php中内置的php_gd2库,总之对于我们开发人员来说就以足够。好了不闲扯了直接上图和操作步骤。

1、打开php.ini中的php_gd2库, 然后找到(;extension=php_gd2.dll),去掉前面的';'号即可。这样就是开始了我们的 DIY之路了。

2、进入php manual(手册)查询,image时,这么多函数我怎么看啊~ 。别急我们几天用到的函数不多.

3、找到imagecreatetruecolor函数直接看他的例子(入门)

 
你看下面出现了个黑色的小文本框.   --->   这不就是我网站所需要的结果么·· 。
大家要是不信可以在自己的php里面去运行一下哟。 
4、看了看别人的,我要把它变成自己的怎么办?我来帮大家分析下代码吧。(分析)
//就是我们web开发的头文件里面的,content-type中申明了MIME格式类型,这里声明为image/png即图片格式。
header ('Content-type: image/png');
//这个就是我刚刚说的要查找的函数,创建一个黑色的背景里面的参数分别是(宽,高) ;
$im = @imagecreatetruecolor(12020
)
      or die(
'Cannot Initialize new GD image stream'
);
//使用调色板(设置文本的颜色). 第一个就是传入我们的背景,后面三个分别是三原色(0-255,0-255,0-255) ;
$text_color imagecolorallocate($im2331491
);
//这个嘛就是我们写一个字符串在我们的背景里了(背景引用,字体(1-6),起始x坐标,起始y坐标,"所接受的字符串","颜色") ;
imagestring($im155,  'A Simple Text String'$text_color
);
//规范格式 。
imagepng($im
);
看完整个例子其实,我们自己DIY只要在里面修改,添加相关的代码即可;

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);
?>

 

结果:

 
   途中是不是多了点、线、而且颜色、位置各不相同呢,对了我的中文字也进来了。是不是很容易
容易的话你也自己动手DIY一下吧. 
写个文档不容易啊 !  由于本人水平有限,有不足的地方还请多多指教。希望您看过后留下您的足迹。
      欢迎大家拍砖~~~
原创粉丝点击