首页 > 开发 > PHP > 正文

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

2024-05-04 23:38:23
字体:
来源:转载
供稿:网友

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

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. $num1 = rand(1,99); 
  15. $num2 = rand(1,99); 
  16. imagestring($img, 5, 5, rand(1,10), $num1, $red); 
  17. imagestring($img,5,30,rand(1,10),getRand(), $white); 
  18. imagestring($img,5,45,rand(1,10),$num2, $green); 
  19. imagestring($img,5,65,rand(1,10),"=", $blue); 
  20. imagestring($img,5,80,rand(1,10),"?", $red); 
  21. header("content-type:image/png"); 
  22. imagepng($img); 
  23. imagedestroy($img); 
  24. function getRand(){ 
  25. $code = rand(0,1); 
  26. switch ($code) { 
  27. case 0: 
  28. return "+"
  29. break
  30. case 1: 
  31. return "-"
  32. break
  33. default
  34. # code... 
  35. break
  36. ?> 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表