Maison  >  Article  >  développement back-end  >  Comment générer un code de vérification dans un algorithme d'addition et de soustraction à l'aide de PHP

Comment générer un code de vérification dans un algorithme d'addition et de soustraction à l'aide de PHP

小云云
小云云original
2018-03-13 09:05:291399parcourir

Cet article partage principalement un exemple de code de vérification généré par PHP à l'aide d'algorithmes d'addition et de soustraction. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Il s'agit d'une démo que j'ai trouvée en ligne et j'ai ajouté une partie du code. Peut être utilisé.

Il faut expliquer ici que lorsque nous appelons cette classe de code de vérification, elle doit être utilisée dans une méthode de contrôleur distincte.

L'algorithme de l'image générée est généré par code, puis la valeur calculée est stockée dans la session.

Lors de la vérification, la valeur d'entrée de l'utilisateur est obtenue, puis la valeur du serveur est extraite pour comparaison


<?php 
namespace mobile\components;
/** 
 * @author fenghuo 
 * 
 * 改造的加减法验证类 
 * 使用示例 VerifyCode::get(1,2); 
 * 验证示例 VerifyCode::check($code); 
 */ 
class VerifyCode 
{ 
  /** 
   * php验证码 
   */ 
  public static function get($one,$two,$prefix = &#39;&#39;, $font_size = 28) 
  { 
    //文件头... 
    ob_get_clean();
    header("Content-type: image/png;charset=utf-8;"); 
    //创建真彩色白纸 
    $width      = $font_size*5; 
    $height      = $font_size+1; 
    $im        = @imagecreatetruecolor($width, $height) or die("建立图像失败"); 
    //获取背景颜色 
    $background_color = imagecolorallocate($im, 255, 255, 255); 
    //填充背景颜色 
    imagefill($im, 0, 0, $background_color); 
    //获取边框颜色 
    $border_color   = imagecolorallocate($im, 200, 200, 200); 
    //画矩形,边框颜色200,200,200 
    imagerectangle($im,0,0,$width - 1, $height - 1,$border_color); 
    //逐行炫耀背景,全屏用1或0 
    for($i = 2;$i < $height - 2;$i++) { 
      //获取随机淡色 
      $line_color = imagecolorallocate($im, rand(200,255), rand(200,255), rand(200,255)); 
      //画线 
      imageline($im, 2, $i, $width - 1, $i, $line_color); 
    } 
    //设置印上去的文字 
    $firstNum = $one; 
    $secondNum = $two; 
    $actionStr = $firstNum > $secondNum ? &#39;-&#39; : &#39;+&#39;; 
    //获取第1个随机文字 
    $imstr[0]["s"] = $firstNum; 
    $imstr[0]["x"] = rand(2, 5); 
    $imstr[0]["y"] = rand(1, 4); 
    //获取第2个随机文字 
    $imstr[1]["s"] = $actionStr; 
    $imstr[1]["x"] = $imstr[0]["x"] + $font_size - 1 + rand(0, 1); 
    $imstr[1]["y"] = rand(1,5); 
    //获取第3个随机文字 
    $imstr[2]["s"] = $secondNum; 
    $imstr[2]["x"] = $imstr[1]["x"] + $font_size - 1 + rand(0, 1); 
    $imstr[2]["y"] = rand(1, 5); 
    //获取第3个随机文字 
    $imstr[3]["s"] = &#39;=&#39;; 
    $imstr[3]["x"] = $imstr[2]["x"] + $font_size - 1 + rand(0, 1); 
    $imstr[3]["y"] = 3; 
    //获取第3个随机文字 
    $imstr[4]["s"] = &#39;?&#39;; 
    $imstr[4]["x"] = $imstr[3]["x"] + $font_size - 1 + rand(0, 1); 
    $imstr[4]["y"] = 3; 
    //文字 
    $text = &#39;&#39;; 
    //写入随机字串 
    for($i = 0; $i < 5; $i++) { 
      //获取随机较深颜色 
      $text_color = imagecolorallocate($im, rand(50, 180), rand(50, 180), rand(50, 180)); 
      $text .= $imstr[$i]["s"]; 
      //画文字 
      imagechar($im, $font_size, $imstr[$i]["x"], $imstr[$i]["y"], $imstr[$i]["s"], $text_color); 
    } 
    session_start();
    $_SESSION[$prefix.&#39;verifycode&#39;] = $firstNum > $secondNum ? ($firstNum - $secondNum) : ($firstNum + $secondNum); 
    //显示图片 
    ImagePng($im); 
    //销毁图片 
    ImageDestroy($im); 
  } 
  public static function check($code) 
  { 
    if(trim($_SESSION[$prefix.&#39;verifycode&#39;]) == trim($code)) { 
      return true; 
    } else { 
      return false; 
    } 
  } 
}

Recommandations associées :

Partage d'exemples de classe de code de vérification php

code d'implémentation de la fonction de code de vérification de page Web php

Explication détaillée de la façon dont PHP implémente les codes de vérification exploitables

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