Heim  >  Artikel  >  Backend-Entwicklung  >  一款PHP验证码的精心打造

一款PHP验证码的精心打造

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

   比如你用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!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn