首頁  >  文章  >  後端開發  >  一個php驗證碼產生類別代碼

一個php驗證碼產生類別代碼

WBOY
WBOY原創
2016-07-25 08:43:231044瀏覽
複製程式碼
  1. class ValidationCode
  2. {
  3. // 屬性
  4. private $width;
  5. private $priight; ;
  6. 私人$image;
  7. 私人$disturbColorNum; //幹擾元素數量
  8. private $checkCode;
  9. function __construct($width=80,$height=20,$codeNum=4)
  10. {
  11. $this->width=$width;
  12. $this->height=$height;
  13. $this->codeNum=$codeNum;
  14. $number=floor($width*$height/15);
  15. if($number> ; 240-$codeNum)
  16. {
  17. $this->disturbColorNum=240-$codeNum;
  18. }else
  19. {
  20. $this->disturbColorNum=$number;
  21. }
  22. $this->checkCode=$this->createCheckcode();
  23. }
  24. function getCheckCode()
  25. {
  26. return $this->checkCode;
  27. }
  28. private function createImage (){
  29. $this->image=imagecreatetruecolor($this->寬度,$this->高度);
  30. $backcolor=imagecolorallocate($this->image ,rand(225,255),rand(225,255) ,rand(255,255));
  31. imagefill($this->image,0,0,$backcolor);
  32. $border=imagecolorallocate($this->; image,0,0,0);
  33. imagerectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
  34. }
  35. 原生函數setDisturbColor(){
  36. for ($i=0;$idisturbColorNum;$i ){
  37. $color=imagecolorallocate($this->image,rand (0,255),rand(0,255),rand(0,255));
  38. imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->image) height-2),$color);
  39. }
  40. for ($i=0;$i {
  41. $color=imagecolorallocate($this->image, rand(0,255),rand(0,255),rand(0,255));
  42. imagearc($this->影像,rand(-10,$this->寬度),rand(-10,$this->;高度),rand(30,300),rand(20,300),55,44,$color );
  43. }
  44. }
  45. 牛皮函數outputText($fontFace=""){
  46. for($ i=0;$icodeNum;$i )
  47. {
  48. $fontcolor=imagecolorallocate($this->image,rand(0,128),rand(0,128),rand(0,128) );
  49. if($fontFace=="")
  50. {
  51. $ fontsize=rand(3,5);
  52. $x=floor($this->width/$this-> ;codeNum)*$i 5;
  53. $y=rand(0,$this->height -15);
  54. imagechar($this->圖片,$fontsize,$x,$y,$這->checkCode{$i},$fontcolor);
  55. }
  56. else
  57. {
  58. $fontsize=rand(12,16);
  59. $x=floor(($this ->width-8)/$this->codeNum)*$i 8;
  60. $y=rand( $fontsize,$this->height-8);
  61. imagettftext($this-> ;圖片,$fontsize,rand(-45,45),$x,$y,$fontcolor,$fontFace,$this- >checkCode{$i});
  62. }
  63. }
  64. }
  65. private function createCheckCode(){
  66. $code="23456789abcdefghijkm(){
  67. $code="23456789abcdefghijkm for($i=0;$icodeNum ;$i )
  68. {
  69. $char=$code{rand(0,strlen($code)-1)};
  70. $str.=$char;
  71. }
  72. 回傳$ str;
  73. }
  74. 原生函數outputImage()
  75. {
  76. if(imagetypes()&IMG_GIF)
  77. {
  78. header("Content-Type:image/gif");
  79. imagepng($this->image);
  80. }else if(imagetypes()&IMG_JPG)
  81. {
  82. header( "Content-Type:image/jpeg");
  83. imagepng($this ->image);
  84. }else if(imagetypes()&IMG_PNG)
  85. {
  86. header("Content-Type:image /png");
  87. imagepng($this->image) ;
  88. }else if(imagetypes()&IMG_WBMP){
  89. header("Content-Type:image/vnd.wap.wbmp");
  90. imagepng($this->image);
  91. }else
  92. {
  93. die("PHP不支援圖片驗證碼");
  94. }
  95. }
  96. //透過此方法向瀏覽器輸出圖像
  97. function showImage($fontFace ="")
  98. {
  99. //圖像背景建立
  100. $this->createImage();
  101. //設定乾預元素
  102. $this->setDisturbColor();
  103. // 向圖像中隨機畫出文字
  104. $this->outputText($fontFace);
  105. // 圖像輸出
  106. $this->輸出影像();
  107. }
  108. function __destruct()
  109. {
  110. imagedestroy($this->image);
  111. }
  112. }
  113. function checklogin(){
  114. if(empty( _POST['name']))
  115. die( '使用者名稱不能為空');
  116. if(empty($_POST['password']))
  117. die("密碼不能為空") ;
  118. if($_SESSION['code']!=$_POST['vertify'])
  119. die("驗證碼輸入不正確".$_SESSION['code']);
  120. $username=$_POST['name'];
  121. $password=md5($_POST['password']);
  122. //檢查是否存在
  123. conndb($username,$password);
  124. }
  125. function conndb($name="",$ps=""){
  126. $conn=mysql_connect('localhost','root','123456');
  127. if(!$ conn) die("資料庫連線失敗".mysql_error());
  128. mysql_select_db('5kan',$conn) or die('選擇資料庫失敗'.mysql_error());
  129. mysql_set_charset('utf8', $conn);
  130. $sql="select id from k_user where username='{$name}' and password='{$ps}'";
  131. $result=mysql_query($sql) or die(" SQL語句錯誤".mysql_error());
  132. if(mysql_num_rows($result)>0) die("登入成功");
  133. else die("使用者名稱或密碼錯誤");
  134. mysql_close ($conn);
  135. }
  136. session_start();
  137. if(!isset($_POST['randnum']))
  138. {
  139. $code=new ValidationCode(120,20, 4);
  140. $code->showImage("comicbd.ttf"); //顯示在頁面
  141. $_SESSION['code']=$code->getCheckCode();//儲存在伺服器中
  142. }
  143. else
  144. {
  145. checklogin();
  146. }
  147. ?>
複製程式碼

複製程式碼
複製程式碼


複製程式碼複製程式碼複製程式碼複製碼 驗證碼, php
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:joomla微信下一篇:joomla微信