首页  >  文章  >  后端开发  >  PHP验证码文件类

PHP验证码文件类

WBOY
WBOY原创
2016-07-25 08:42:241002浏览
  1. class CCheckCodeFile
  2. {
  3. //验证码位数
  4. private $mCheckCodeNum = 4;
  5. //产生的验证码
  6. private $mCheckCode = '';
  7. //验证码的图片
  8. private $mCheckImage = '';
  9. //干扰像素
  10. private $mDisturbColor = '';
  11. //验证码的图片宽度
  12. private $mCheckImageWidth = '80';
  13. //验证码的图片宽度
  14. private $mCheckImageHeight = '20';
  15. /**
  16. *
  17. * @brief 输出头
  18. *
  19. */
  20. private function OutFileHeader()
  21. {
  22. header ("Content-type: image/png");
  23. }
  24. /**
  25. *
  26. * @brief 产生验证码
  27. *
  28. */
  29. private function CreateCheckCode()
  30. {
  31. $this->mCheckCode = strtoupper(substr(md5(rand()),0,$this->mCheckCodeNum));
  32. return $this->mCheckCode;
  33. }
  34. /**
  35. *
  36. * @brief 产生验证码图片
  37. *
  38. */
  39. private function CreateImage()
  40. {
  41. $this->mCheckImage = @imagecreate ($this->mCheckImageWidth,$this->mCheckImageHeight);
  42. imagecolorallocate ($this->mCheckImage, 200, 200, 200);
  43. return $this->mCheckImage;
  44. }
  45. /**
  46. *
  47. * @brief 设置图片的干扰像素
  48. *
  49. */
  50. private function SetDisturbColor()
  51. {
  52. for ($i=0;$i {
  53. $this->mDisturbColor = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,255), rand(0,255));
  54. imagesetpixel($this->mCheckImage,rand(2,128),rand(2,38),$this->mDisturbColor);
  55. }
  56. }
  57. /**
  58. *
  59. * @brief 设置验证码图片的大小
  60. *
  61. * @param $width 宽
  62. *
  63. * @param $height 高
  64. *
  65. */
  66. public function SetCheckImageWH($width,$height)
  67. {
  68. if($width==''||$height=='')return false;
  69. $this->mCheckImageWidth = $width;
  70. $this->mCheckImageHeight = $height;
  71. return true;
  72. }
  73. /**
  74. *
  75. * @brief 在验证码图片上逐个画上验证码
  76. *
  77. */
  78. private function WriteCheckCodeToImage()
  79. {
  80. for ($i=0;$imCheckCodeNum;$i++)
  81. {
  82. $bg_color = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,128), rand(0,255));
  83. $x = floor($this->mCheckImageWidth/$this->mCheckCodeNum)*$i;
  84. $y = rand(0,$this->mCheckImageHeight-15);
  85. imagechar ($this->mCheckImage, 5, $x, $y, $this->mCheckCode[$i], $bg_color);
  86. }
  87. }
  88. /**
  89. *
  90. * @brief 输出验证码图片
  91. *
  92. */
  93. public function OutCheckImage()
  94. {
  95. $this ->OutFileHeader();
  96. $this ->CreateCheckCode();
  97. $this ->CreateImage();
  98. $this ->SetDisturbColor();
  99. $this ->WriteCheckCodeToImage();
  100. imagepng($this->mCheckImage);
  101. imagedestroy($this->mCheckImage);
  102. }
  103. }
  104. $c_check_code_image = new CCheckCodeFile();
  105. //$c_check_code_image ->SetCheckImageWH(100,50);//设置显示验证码图片的尺寸
  106. $c_check_code_image ->OutCheckImage();
  107. ?>
复制代码

验证码, PHP


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn