Maison  >  Article  >  développement back-end  >  Comment créer un magnifique fichier de classe de code de vérification PHP et comment l'appeler

Comment créer un magnifique fichier de classe de code de vérification PHP et comment l'appeler

一个新手
一个新手original
2017-10-05 15:31:071497parcourir

//验证码类
class ValidateCode {
 private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子
 private $code;//验证码
 private $codelen = 4;//验证码长度
 private $width = 130;//宽度
 private $height = 50;//高度
 private $img;//图形资源句柄
 private $font;//指定的字体
 private $fontsize = 20;//指定字体大小
 private $fontcolor;//指定字体颜色
 //构造方法初始化
 public function __construct() {
  $this->font = dirname(__FILE__).'/font/elephant.ttf';//注意字体路径要写对,否则显示不了图片
 }
 //生成随机码
 private function createCode() {
  $_len = strlen($this->charset)-1;
  for ($i=0;$i<$this->codelen;$i++) {
   $this->code .= $this->charset[mt_rand(0,$_len)];
  }
 }
 //生成背景
 private function createBg() {
  $this->img = imagecreatetruecolor($this->width, $this->height);
  $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
  imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
 }
 //生成文字
 private function createFont() {
  $_x = $this->width / $this->codelen;
  for ($i=0;$i<$this->codelen;$i++) {
   $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
   imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
  }
 }
 //生成线条、雪花
 private function createLine() {
  //线条
  for ($i=0;$i<6;$i++) {
   $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
   imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
  }
  //雪花
  for ($i=0;$i<100;$i++) {
   $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
   imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),&#39;*&#39;,$color);
  }
 }
 //输出
 private function outPut() {
  header(&#39;Content-type:image/png&#39;);
  imagepng($this->img);
  imagedestroy($this->img);
 }
 //对外生成
 public function doimg() {
  $this->createBg();
  $this->createCode();
  $this->createLine();
  $this->createFont();
  $this->outPut();
 }
 //获取验证码
 public function getCode() {
  return strtolower($this->code);
 }
}

Utilisation :
1. Enregistrez d'abord la classe de code de vérification sous le nom de ValidateCode.class.php
2. Créez ; un nouveau fichier nommé captcha.php pour appeler cette classe
captcha.php

3 , cité dans le page, le code est le suivant :

4. Une page de vérification complète, le code est le suivant :

<?phpsession_start();
    //在页首先要开启session,//error_reporting(2047);
    session_destroy();
    //将session去掉,以每次都能取新的session值;
    //用seesion 效果不错,也很方便?><html><head><title>session 图片验证实例</title><style type="text/css">#login p {
    margin-top: 15px;
    line-height: 20px;
    font-size: 14px;
    font-weight: bold;
}
#login img {
    cursor:pointer;
}
form {
    margin-left:20px;
}
</style></head> <body>
<form id="login" action="" method="post"><p>此例为session验证实例</p><p><span>验证码:</span><input type="text" name="validate" value="" size=10> <img title="点击刷新" src="./captcha.php" align="absbottom" onclick="this.src=&#39;captcha.php?&#39;+Math.random();
    "></img></p><p><input type="submit"></p></form><?php//打印上一个session;
    //echo "上一个session:<b>".$_SESSION["authnum_session"]."</b><br>";
    $validate="";
    if(isset($_POST["validate"])) {
    $validate=$_POST["validate"];
    echo "您刚才输入的是:".$_POST["validate"]."<br>状态:";
    if($validate!=$_SESSION["authnum_session"]) {
    //判断session值与用户输入的验证码是否一致;
    echo "<font color=red>输入有误</font>";
}
else {
    echo "<font color=green>通过验证</font>";
}
} ?>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Méthode d'installation PHPArticle suivant:Méthode d'installation PHP