>  기사  >  백엔드 개발  >  PHP를 클릭하여 인증 코드를 새로 고치세요.

PHP를 클릭하여 인증 코드를 새로 고치세요.

墨辰丷
墨辰丷원래의
2018-06-06 10:48:502739검색

이 글은 클릭하면 새로고침할 수 있는 PHP 인증코드를 주로 소개하고 있으니 관심있는 친구들이 참고하시면 좋을 것 같습니다.

인증 코드 클래스 파일 CreateImg.class.php

<?php 
 
class ValidationCode 
{ 
private $width,$height,$codenum; 
public $checkcode;   //产生的验证码 
private $checkimage;  //验证码图片 
private $disturbColor = &#39;&#39;; //干扰像素 
 
function __construct($width=&#39;80&#39;,$height=&#39;20&#39;,$codenum=&#39;4&#39;) 
{ 
  $this->width=$width; 
  $this->height=$height; 
  $this->codenum=$codenum; 
} 
function outImg() 
{ 
  //输出头 
  $this->outFileHeader(); 
  //产生验证码 
  $this->createCode(); 
 
  //产生图片 
  $this->createImage(); 
  //设置干扰像素 
  $this->setDisturbColor(); 
  //往图片上写验证码 
  $this->writeCheckCodeToImage(); 
  imagepng($this->checkimage); 
  imagedestroy($this->checkimage); 
} 
 
private function outFileHeader() 
{ 
  header ("Content-type: image/png"); 
} 
 
private function createCode() 
{ 
  $this->checkcode = strtoupper(substr(md5(rand()),0,$this->codenum)); 
} 
 
private function createImage() 
{ 
  $this->checkimage = @imagecreate($this->width,$this->height); 
  $back = imagecolorallocate($this->checkimage,255,255,255); 
  $border = imagecolorallocate($this->checkimage,0,0,0);  
  imagefilledrectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$back); // 白色底 
  imagerectangle($this->checkimage,0,0,$this->width - 1,$this->height - 1,$border);  // 黑色边框 
} 
 
private function setDisturbColor() 
{ 
  for ($i=0;$i<=200;$i++) 
  { 
  $this->disturbColor = imagecolorallocate($this->checkimage, rand(0,255), rand(0,255), rand(0,255)); 
  imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor); 
  } 
} 
 
private function writeCheckCodeToImage() 
{ 
  for ($i=0;$i<=$this->codenum;$i++) 
  { 
  $bg_color = imagecolorallocate ($this->checkimage, rand(0,255), rand(0,128), rand(0,255)); 
  $x = floor($this->width/$this->codenum)*$i; 
  $y = rand(0,$this->height-15); 
  imagechar ($this->checkimage, rand(5,8), $x, $y, $this->checkcode[$i], $bg_color); 
  } 
} 
function __destruct() 
{ 
  unset($this->width,$this->height,$this->codenum); 
} 
} 
?>

포함 파일 imgcode.php

<?php 
session_start(); 
require_once(&#39;CreateImg.class.php&#39;); 
$image = new ValidationCode(&#39;80&#39;,&#39;20&#39;,&#39;4&#39;);  //图片长度、宽度、字符个数 
$image->outImg(); 
$_SESSION[&#39;validationcode&#39;] = $image->checkcode; //存贮验证码到 $_SESSION 中 
?>

Front-end 파일 데모.php

?php 
session_start(); 
$test = $_POST[&#39;test&#39;]; 
$test = strtoupper(trim($test)); 
$submit = $_POST[&#39;submit&#39;]; 
if(isset($submit)){ 
if($test==$_SESSION[&#39;validationcode&#39;]){ 
  echo &#39;true&#39;; 
} else { 
  echo &#39;false&#39;; 
} 
} 
?> 
 
<html> 
<head> 
<title>Image</title> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<script language="javascript"> 
function newgdcode(obj,url) { 
obj.src = url+ &#39;?nowtime=&#39; + new Date().getTime(); 
//后面传递一个随机参数,否则在IE7和火狐下,不刷新图片 
} 
</script> 
<body> 
<img src="imgcode.php" alt="看不清楚,换一张" align="absmiddle" style="cursor: pointer;" onclick="javascript:newgdcode(this,this.src);" /> 
<form method="POST" name="form1" action="image.php"> 
<input type="text" name="test"> 
<br /> 
<input type="submit" name="submit" value="提交"> 
</form> 
</body> 
</head> 
</html>

요약: 위 내용이 이 글의 전체 내용입니다. 모든 사람에게 도움이 될 수 있습니다. 학습에 도움이 됩니다.

관련 권장 사항:

PHP로 단어를 내보내는 방법

PHP jpgraph 설치 및 기본 사용법

PHP 사용자 정의 페이징 클래스의 원리

위 내용은 PHP를 클릭하여 인증 코드를 새로 고치세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.