Home  >  Article  >  Backend Development  >  一款PHP验证码的精心打造

一款PHP验证码的精心打造

WBOY
WBOYOriginal
2016-06-23 13:23:02843browse

   比如你用PHP开发了网站的会员登录页面,当然要实现验证码,验证码的图片可以是静态的,也可以是动态的,文字可以是汉字,英文,法文,日文等等,可以随便替换。如验证码图片:

当然可以修改,只是要导入PHP源代码才可以实现

代码如下:

01.

02. class Imagecode{

03. private $width ;

04. private $height;

05. private $counts;

06. private $distrubcode;

07. private $fonturl;

08. private $session;

09. function __construct($width = 120,$height = 30,$counts = 5,$distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm",$fonturl="C:\Windows\Fonts\TektonPro-BoldCond.otf"){

10. $this->width=$width;

11. $this->height=$height;

12. $this->counts=$counts;

13. $this->distrubcode=$distrubcode;

14. $this->fonturl=$fonturl;

15. $this->session=$this->sessioncode();

16. session_start();

17. $_SESSION['code']=$this->session;

18. }

19.  

20. function imageout(){

21. $im=$this->createimagesource();

22. $this->setbackgroundcolor($im);

23. $this->set_code($im);

24. $this->setdistrubecode($im);

25. ImageGIF($im);

26. ImageDestroy($im);

27. }

28.  

29. private function createimagesource(){

30. return imagecreate($this->width,$this->height);

31. }

32. private function setbackgroundcolor($im){

33. $bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255));//±³¾°ÑÕÉ«

34. imagefill($im,0,0,$bgcolor);

35. }

36. private function setdistrubecode($im){

37. $count_h=$this->height;

38. $cou=floor($count_h*2);

39. for($i=0;$i

40. $x=rand(0,$this->width);

41. $y=rand(0,$this->height);

42. $jiaodu=rand(0,360);

43. $fontsize=rand(8,15);

44. $fonturl=$this->fonturl;

45. $originalcode = $this->distrubcode;

46. $countdistrub = strlen($originalcode);

47. $dscode = $originalcode[rand(0,$countdistrub-1)];

48. $color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140));

49. imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode);

50.  

51. }

52. }

53. private function set_code($im){

54. $width=$this->width;

55. $counts=$this->counts;

56. $height=$this->height;

57. $scode=$this->session;

58. $y=floor($height/2)+floor($height/4);

59. $fontsize=rand(30,35);

60. $fonturl="C:\Windows\Fonts\AdobeGothicStd-Bold.otf";//$this->fonturl;

61.  

62. $counts=$this->counts;

63. for($i=0;$i

64. $char=$scode[$i];

65. $x=floor($width/$counts)*$i+8;

66. $jiaodu=rand(-20,30);

67. $color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));

68. imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);

69. }

70.  

71.  

72.  

73. }

74. private function sessioncode(){

75. $originalcode = $this->distrubcode;

76. $countdistrub = strlen($originalcode);

77. $_dscode = "";

78. $counts=$this->counts;

79. for($j=0;$j

80. $dscode = $originalcode[rand(0,$countdistrub-1)];

81. $_dscode.=$dscode;

82. }

83. return $_dscode;

84.  

85. }

86. }

87. Header("Content-type: image/GIF");

88. $imagecode=new  Imagecode(160,50);

89. $imagecode->imageout();


编写完毕,用Dreamweaver编辑器 打开,上传OK。

do happy!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn