当前位置:首页 > PHP教程 > php应用 > 列表

php实现的数字验证码及数字运算验证码

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-14 23:10:00 浏览: 评论:0 

这篇文章主要介绍了php实现的数字验证码及数字运算验证码,以实例形式分别描述了php实现数字验证码及数学运算验证码的相关技巧,非常简单实用,需要的朋友可以参考下。

本文实例讲述了php实现的数字验证码及数字运算验证码,分享给大家供大家参考,具体如下:

1. 数字验证码:

  1. <?php 
  2. //第一个实例是数字验证码,最常见的验证码。多少个数字可以由自己决定。 
  3. //$num是生成的验证码包含几个数字 
  4. getValidate(4,60,20); 
  5. function getValidate($num,$w,$h){ 
  6.   $code = ""
  7.   for($i=0;$i<$num;$i++){ 
  8.     $code .= rand(0,9); 
  9.   } 
  10.   //code变量最后是$num个数字,并且是字符串。因袭如果是生成四位的数字验证码,可以用rand(1000,9999)生成 
  11.   Header("Content-type:image/PNG"); 
  12.   $img = imagecreate($w,$h);//创建图片,长宽参数是一开始定义好的。 
  13.   $black = imagecolorallocate($img,0,0,0);//定义黑色 
  14.   $gray = imagecolorallocate($img,200,200,200);//定义灰色 
  15.   $bgcolor = imagecolorallocate($img,255,255,255);//背景色白色 
  16.   imagefill($img,0,0,$gray); 
  17.   //imagefill($image,ing $x,int $y,int $color),在image图像的坐标x,y处用color颜色执行区域填充 
  18.   //给验证码画上边框,感觉验证码美美的,其实呢画边框就是给他画上一个矩形 
  19.   imagerectangle($img,0,0,$w-1,$h-1,$black);//用黑色的框框 
  20.   /*imagestring($image,$font,$x,$y,$s,$col) 
  21.   用col颜色将字符串s画到image所代表的图像的x,y处(xy是字符串的左上角坐标), 
  22.   整幅图像的左上角为(0,0)如果font是1,2,3,4,5则使用内置字体*/ 
  23.   //一下是画四个数字的方法,让四个字符位置都随机等 
  24.   $strx = rand(5,10); 
  25.   for($i = 0;$i < $num;$i++){ 
  26.     $strops = rand(1,6); 
  27.     imagestring($img,5,$strx,$strops,substr($code,$i,1),$black); 
  28.     $strx += rand(8,12); 
  29.     //strx是横坐标,需要每一次加上之前的坐标,保证不会重叠。纵坐标不管 
  30.   } 
  31.   //substr() 函数返回字符串的一部分,substr(string,start,length),要截取的字符串,start开始位置,length截取的长度 
  32.   //生成好了数字,下面要给验证码区域一些干扰,防止一些工具可以自动识别 
  33.   //1.方法一:给背景加上很多噪点 
  34.   //imagesetpixel($image,$x,$y,$color),在image图像中用color颜色在x,y坐标(图像左上角为0,0)上画一个点 
  35.   for($i = 0;$i<80;$i++){ 
  36.     imagesetpixel($img, rand(0,$w), rand(0,$h), $black);//这些点分布在这个背景里面 
  37.   } 
  38.   //2.方法二:绘制几条虚线 
  39.   $style = array($black,$gray); 
  40.   imagesetstyle($img$style); 
  41.   //imagesetstyle($image,$style),设定画线的风格,像素组成的数组 
  42.   $y1 = rand(0,$h); 
  43.   $y2 = rand(0,$h); 
  44.   $y3 = rand(0,$h); 
  45.   $y4 = rand(0,$h); 
  46.   imageline($img,0,$y1,$w,$y2,IMG_COLOR_STYLED); 
  47.   imageline($img,0,$y3,$w,$y4,IMG_COLOR_STYLED); 
  48.   imagepng($img); 
  49.   imagedestroy($img); 
  50. ?> 

2. 数字运算验证码:

  1. <?php 
  2. getValidate(100,30); 
  3. function getValidate($w,$h){ 
  4.   $img = imagecreate($w,$h); 
  5.   $gray = imagecolorallocate($img,255,255,255); 
  6.   $black = imagecolorallocate($img,rand(0,200),rand(0,200),rand(0,200)); 
  7.   $red = imagecolorallocate($img, 255, 0, 0); 
  8.   $white = imagecolorallocate($img, 255, 255, 255); 
  9.   $green = imagecolorallocate($img, 0, 255, 0); 
  10.   $blue = imagecolorallocate($img, 0, 0, 255); 
  11.   imagefilledrectangle($img, 0, 0, 100, 30, $black); 
  12.   for($i = 0;$i < 80;$i++){ 
  13.     imagesetpixel($img, rand(0,$w), rand(0,$h), $gray); 
  14.   } 
  15.   $num1 = rand(1,99); 
  16.   $num2 = rand(1,99); 
  17.   imagestring($img, 5, 5, rand(1,10), $num1$red); 
  18.   imagestring($img,5,30,rand(1,10),getRand(), $white); 
  19.   imagestring($img,5,45,rand(1,10),$num2$green); 
  20.   imagestring($img,5,65,rand(1,10),"="$blue); 
  21.   imagestring($img,5,80,rand(1,10),"?"$red); 
  22.   header("content-type:image/png"); 
  23.   imagepng($img); 
  24.   imagedestroy($img); 
  25. function getRand(){ 
  26.   $code = rand(0,1); 
  27.   switch ($code) { 
  28.     case 0: 
  29.       return "+"
  30.       break
  31.     case 1: 
  32.       return "-"
  33.       break
  34.     default
  35.       # code... 
  36.       break
  37.   } 
  38. ?> 

希望本文所述对大家的php程序设计有所帮助。

Tags: php数字验证码

分享到: