VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php实现的验证码文件类实例

这篇文章主要介绍了php实现的验证码文件类,实例分析了php生成验证码文件的技巧,非常具有实用价值,需要的朋友可以参考下,本文实例讲述了php实现的验证码文件类。分享给大家供大家参考,具体如下:

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

出处:http://www.phpfensi.com/php/20210528/16031.html


相关教程