Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen von Beispielen für eine PHP-Bestätigungscode-Klasse

Teilen von Beispielen für eine PHP-Bestätigungscode-Klasse

小云云
小云云Original
2018-02-10 09:08:141449Durchsuche

Dieser Artikel stellt hauptsächlich eine praktische PHP-Verifizierungscodeklasse vor, die einen gewissen Referenzwert hat. Ich hoffe, sie kann jedem helfen.

code.php ist die Verifizierungscode-Klasse. Der Name der Klasse sollte am besten mit dem Dateinamen übereinstimmen, was für unsere Anzeige von Vorteil ist.

code.php


<?php
header(&#39;Content-type:text/html;charset=utf8&#39;);
class Code{
  // 验证码个数$number
  protected $number;
  // 验证码类型$codeType
  protected $codeType;
  // 验证码图像宽度$width
  protected $width;
  // 验证码$height
  protected $height;
  // 验证码字符串$code
  protected $code;
  // 图像资源$image
  protected $image;
  
  public function __construct($number=4,$codeType=0,$height=50,$width=100){
    //初始化自己的成员属性
    $this->number=$number;
    $this->codeType=$codeType;
    $this->width = $width;
    $this->height= $height;
    
    //生成验证码函数
    $this->code = $this ->createCode();
    
  }
  public function __get($name){
    if ($name == &#39;code&#39;){
      return $this->code;
    }
    return false;
  }
  /*获取验证码*/
  public function getCode() {
    return $this->code;
  }
  /*图像资源销毁*/
  public function __destruct(){
    imagedestroy($this->image);
  }
  protected function createCode(){
    //通过你的验证码类型生成验证码
    switch ($this->codeType){
      case 0: //纯数字
        $code = $this->getNumberCode();
        break;
      case 1: //纯字母的
        $code = $this->getCharCode();
        break;
      case 2: //数字和字母混合
        $code = $this->getNumCharCode();
        break;
      default:
        die(&#39;不支持此类验证码类型&#39;);
    }
    return $code;
  }
  protected function getNumberCode(){
    $str = join(&#39;&#39;, range(0, 9));
    return substr(str_shuffle($str),0, $this->number);
  }
  protected function getCharCode(){
    $str = join(&#39;&#39;, range(&#39;a&#39;, &#39;z&#39;));
    $str = $str.strtoupper($str);
    return substr(str_shuffle($str),0,$this->number);
  }
  protected function getNumCharCode(){
    $numstr = join(&#39;&#39;,range(0, 9));
    $str =join(&#39;&#39;, range(&#39;a&#39;, &#39;z&#39;));
    $str =$numstr.$str.strtoupper($str);
    return substr(str_shuffle($str), 0,$this->number);
  }
  protected function createImage(){
    $this->image = imagecreatetruecolor($this->width, 
        $this->height);
  }
  protected function fillBack(){
    imagefill($this->image, 0, 0, $this->lightColor());
  }
  /*浅色*/
  protected function lightColor(){
    return imagecolorallocate($this->image, mt_rand(133,255), mt_rand(133,255), mt_rand(133,255));
  }
  /*深色*/
  protected function darkColor(){
    return imagecolorallocate($this->image, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120));
  }
  protected function drawChar(){
    $width = ceil($this->width / $this->number);
    for ($i=0; $i< $this->number;$i++){
      $x = mt_rand($i*$width+5, ($i+1)*$width-10);
      $y = mt_rand(0, $this->height -15);
      imagechar($this->image, 5, $x, $y, $this->code[$i], $this->darkColor());
    }
  }
  protected function drawLine(){
    for ($i=0;$i<5;$i++) {
      imageline($this->image,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$this->darkColor());
    }
  }
  protected function drawDisturb(){
    for ($i=0;$i<150;$i++){
      $x=mt_rand(0, $this->width);
      $y=mt_rand(0, $this->height);
      imagesetpixel($this->image, $x, $y, $this->lightColor());
    }
  }
  protected function show(){
    header(&#39;Content-Type:image/png&#39;);
    imagepng($this->image);
  }
  public function outImage(){
//     创建画布
    $this->createImage();
//     填充背景色
    $this->fillBack();
//     将验证码字符串花到画布上
    $this->drawChar();
//     添加干扰元素
    $this->drawDisturb();
//     添加线条
    $this->drawLine();
//     输出并显示
    $this->show();
  }
}

test.php ist neu ein neuer Bestätigungscode und speichert ihn in der Sitzung, spielt die ab Rolle der Aufbewahrung und Speicherung für die Verifizierung unseres Verifizierungscodes.

test.php


<?php
//开启session
session_start();
require_once &#39;code.php&#39;;

$code= new Code(4,1,50,100);
$_SESSION[&#39;code&#39;]= $code->getCode();
$code->outImage();

login.php ist die endgültige Überprüfung.

login.php


<?php 
    //开启Session 
    session_start(); 
    //判断是否提交 
    if(isset($_POST[&#39;dosubmit&#39;])){ 
      //获取session中的验证码并转为小写 
      $sessionCode=strtolower($_SESSION[&#39;code&#39;]); 
      //获取输入的验证码 
      $code=strtolower($_POST[&#39;code&#39;]); 
      //判断是否相等 
      if($sessionCode==$code){ 
        echo "<script type=&#39;text/javascript&#39;>alert(&#39;验证码正确!&#39;);</script>"; 
      }else{ 
        echo "<script type=&#39;text/javascript&#39;>alert(&#39;验证码错误!&#39;);</script>"; 
      } 
    } 
  ?> 
  <!DOCTYPE html> 
  <html> 
    <head> 
      <title></title> 
      <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 
      <style type="text/css"> 
        *{margin:0px;padding:0px;} 
        ul{ 
          width:400px; 
          list-style:none; 
          margin:50px auto; 
        } 
         
        li{ 
          padding:12px; 
          position:relative; 
        } 
         
        label{ 
          width:80px; 
          display:inline-block; 
          float:left; 
          line-height:30px; 
        } 
         
        input[type=&#39;text&#39;],input[type=&#39;password&#39;]{ 
          height:30px; 
        } 
         
        img{ 
          margin-left:10px; 
        } 
         
        input[type="submit"]{ 
          margin-left:80px; 
          padding:5px 10px; 
        } 
      </style> 
    </head> 
    <body> 
      <form action="login.php" method="post"> 
        <ul> 
          <li> 
            <label>用户名:</label> 
            <input type="text" name="username"/> 
          </li> 
          <li> 
            <label>密码:</label> 
            <input type="password" name="password"/> 
          </li> 
          <li> 
            <label>验证码:</label> 
            <input type="text" name="code" size="4" style="float:left"/> 
            <img src="test.php" onclick="this.src=&#39;test.php?Math.random()&#39;"/> 
          </li> 
          <li> 
            <input type="submit" value="登录" name="dosubmit"/> 
          </li> 
        </ul> 
      </form> 
    </body> 
  </html>

Verwandte Empfehlungen:

PHP-Implementierung Einfache und praktische Verifizierungscode-Klasse

Wie man eine schöne PHP-Verifizierungscode-Klassendatei erstellt und wie man sie aufruft

Wie man eine PHP erstellt Verifizierungscode-Klassendatei und detaillierte Erläuterung der Aufrufmethode

Das obige ist der detaillierte Inhalt vonTeilen von Beispielen für eine PHP-Bestätigungscode-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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