> 백엔드 개발 > PHP 튜토리얼 > PHP 인증 코드 생성 코드

PHP 인증 코드 생성 코드

WBOY
풀어 주다: 2016-07-25 08:43:23
원래의
1076명이 탐색했습니다.
  1. class ValidationCode
  2. {
  3. //属性
  4. private $width;
  5. private $height;
  6. private $ codeNum;
  7. 비공개 $image;
  8. 비공개 $disturbColorNum; //干扰元素数目
  9. private $checkCode;
  10. function __construct($width=80,$height=20,$codeNum=4)
  11. {
  12. $this->width=$width;
  13. $this->height=$height;
  14. $this->codeNum=$codeNum;
  15. $number=floor($width*$height/15);
  16. if($number> ;240-$codeNum)
  17. {
  18. $this->disturbColorNum=240-$codeNum;
  19. }else
  20. {
  21. $this->disturbColorNum=$number;
  22. }
  23. $this->checkCode=$this->createCheckcode();
  24. }
  25. function getCheckCode()
  26. {
  27. return $this->checkCode;
  28. }
  29. 비공개 함수 createImage(){
  30. $this->image=imagecreatetruecolor($this->width,$this->height);
  31. $backcolor=imagecolorallocate($this->image ,rand(225,255),rand(225,255),rand(255,255));
  32. imagefill($this->image,0,0,$backcolor);
  33. $border=imagecolorallocate($this-> image,0,0,0);
  34. imageRectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
  35. }
  36. 비공개 함수 setDisturbColor(){
  37. for($i=0;$i<$this->disturbColorNum;$i ){
  38. $color=imagecolorallocate($this->image,rand (0,255),rand(0,255),rand(0,255));
  39. imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this-> height-2),$color);
  40. }
  41. for($i=0;$i<10;$i )
  42. {
  43. $color=imagecolorallocate($this->image, rand(0,255),rand(0,255),rand(0,255));
  44. imagearc($this->image,rand(-10,$this->width),rand(-10,$this-> ;height),rand(30,300),rand(20,300),55,44,$color);
  45. }
  46. }
  47. 비공개 함수 outputText($fontFace=""){
  48. for($ i=0;$i<$this->codeNum;$i )
  49. {
  50. $fontcolor=imagecolorallocate($this->image,rand(0,128),rand(0,128),rand(0,128) );
  51. if($fontFace=="")
  52. {
  53. $fontsize=rand(3,5);
  54. $x=floor($this->width/$this-> ;codeNum)*$i 5;
  55. $y=rand(0,$this->height-15);
  56. imagechar($this->image,$fontsize,$x,$y,$ this->checkCode{$i},$fontcolor);
  57. }
  58. else
  59. {
  60. $fontsize=rand(12,16);
  61. $x=floor(($this ->width-8)/$this->codeNum)*$i 8;
  62. $y=rand($fontsize,$this->height-8);
  63. imagettftext($this-> ;image,$fontsize,rand(-45,45),$x,$y,$fontcolor,$fontFace,$this->checkCode{$i});
  64. }
  65. }
  66. }
  67. 비공개 함수 createCheckCode(){
  68. $code="23456789abcdefghijkmnpqrstuvwrst";
  69. $str="";
  70. for($i=0;$i<$this->codeNum ;$i )
  71. {
  72. $char=$code{rand(0,strlen($code)-1)};
  73. $str.=$char;
  74. }
  75. $ 반환 str;
  76. }
  77. 비공개 함수 outputImage()
  78. {
  79. if(imagetypes()&IMG_GIF)
  80. {
  81. header("Content-Type:image/gif");
  82. imagepng($this->image);
  83. }else if(imagetypes()&IMG_JPG)
  84. {
  85. header("Content-Type:image/jpeg");
  86. imagepng($this ->image);
  87. }else if(imagetypes()&IMG_PNG)
  88. {
  89. header("Content-Type:image/png");
  90. imagepng($this->image) ;
  91. }else if(imagetypes()&IMG_WBMP){
  92. header("Content-Type:image/vnd.wap.wbmp");
  93. imagepng($this->image);
  94. }else
  95. {
  96. die("PHP不支持图文验证码");
  97. }
  98. }
  99. //통합过该方法向浏览器输출图이미지
  100. function showImage($fontFace ="")
  101. {
  102. //创建图image背景
  103. $this->createImage();
  104. //设置干扰元素
  105. $this->setDisturbColor();
  106. //向图 Image中随机画출문본
  107. $this->outputText($fontFace);
  108. //输ude图image
  109. $this->outputImage();
  110. }
  111. function __destruct()
  112. {
  113. imagedestroy($this->image);
  114. }
  115. }
  116. function checklogin(){
  117. if(empty( $_POST['name']))
  118. die('사용자 이름은 비워둘 수 없습니다.');
  119. if(empty($_POST['password']))
  120. die("비밀번호는 비워둘 수 없습니다." ) ;
  121. if($_SESSION['code']!=$_POST['vertify'])
  122. die("인증코드 입력이 잘못되었습니다.".$_SESSION['code']);
  123. $username=$_POST['name'];
  124. $password=md5($_POST['password']);
  125. //존재하는지 확인
  126. conndb($username,$password) ;
  127. }
  128. 함수 conndb($name="",$ps=""){
  129. $conn=mysql_connect('localhost','root','123456');
  130. if( ! $conn) die("데이터베이스 연결 실패".mysql_error());
  131. mysql_select_db('5kan',$conn) 또는 die('데이터베이스 선택 실패'.mysql_error());
  132. mysql_set_charset('utf8 ' ,$conn);
  133. $sql="사용자 이름='{$name}' 및 비밀번호='{$ps}'"인 k_user에서 ID 선택;
  134. $result=mysql_query($sql) 또는 사망 ( "SQL 문 오류".mysql_error());
  135. if(mysql_num_rows($result)>0) die("로그인 성공");
  136. else die("사용자 이름 또는 비밀번호가 잘못되었습니다.");
  137. mysql_close($conn);
  138. }
  139. session_start();
  140. if(!isset($_POST['randnum']))
  141. {
  142. $code=new ValidationCode(120, 20,4);
  143. $code->showImage("comicbd.ttf"); //페이지에 표시
  144. $_SESSION['code']=$code->getCheckCode();//저장 서버에서
  145. }
  146. else
  147. {
  148. checklogin();
  149. }
  150. ?>
코드 복사

인증코드, php


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿