Maison >développement back-end >tutoriel php >Explication détaillée de la façon dont PHP implémente les codes de vérification exploitables

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

*文
*文original
2018-01-05 18:06:091559parcourir

Comment PHP implémente-t-il des codes de vérification exploitables ? Cet article présente principalement comment implémenter des codes de vérification exploitables en PHP. Le code est très détaillé et mérite d'être appris. Les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

Cet article partage un exemple de code d'implémentation d'un code de vérification calculable en PHP. J'espère qu'il sera utile à l'apprentissage de chacun.

code demo.php

<?php 
session_start(); 
if(!emptyempty($_POST[&#39;Login&#39;])){ 
  if(md5(strtoupper($_POST[&#39;Login&#39;])) == $_SESSION[&#39;Login&#39;]){ 
    echo &#39;Correct&#39;; 
  }else{ 
    echo &#39;Error&#39;;   
  } 
} 
?> 
 
<form method="post"> 
  <input type="text" name="Login" value="" /><img src="img.php?Action=Login&imgW=80&imgH=30" align="absmiddle"> 
  <input type="submit" value="Login" /> 
</form>

code img.php

<?php 
session_start(); 
function getCode ($length = 32, $mode = 0) 
{ 
switch ($mode) 
{ 
   case &#39;1&#39;: 
     $str = &#39;123456789&#39;; 
      break; 
 case &#39;2&#39;: 
      $str = &#39;abcdefghijklmnopqrstuvwxyz&#39;; 
      break; 
 case &#39;3&#39;: 
      $str = &#39;ABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;; 
      break; 
 case &#39;4&#39;: 
      $str = &#39;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&#39;; 
      break; 
 case &#39;5&#39;: 
      $str = &#39;ABCDEFGHIJKLMNPQRSTUVWXYZ123456789&#39;; 
      break; 
    case &#39;6&#39;: 
      $str = &#39;abcdefghijklmnopqrstuvwxyz1234567890&#39;; 
      break; 
    default: 
      $str = &#39;ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789&#39;; 
      break; 
} 
 
$result = &#39;&#39;; 
$l = strlen($str)-1; 
for($i = 0;$i < $length;$i ++) 
{ 
 $num = rand(0, $l); 
 $result .= $str[$num]; 
} 
return $result; 
} 
//建立验证图片 
function createAuthNumImg($randStr,$imgW=100,$imgH=40,$fontName) 
{ 
header ("content-type: image/png"); 
$image = imagecreate($imgW , $imgH); 
$color_white = imagecolorallocate($image , 255 , 255 , 255); 
$color_gray = imagecolorallocate($image , 228 , 228 , 228); 
$color_black = imagecolorallocate($image , 255 , 102 , 204); 
for ($i = 0 ; $i < 1000 ; $i++) 
{ 
 imagesetpixel($image , mt_rand(0 , $imgW) , mt_rand(0 , $imgH) , $color_gray); 
} 
imagerectangle($image , 0 , 0 , $imgW - 1 , $imgH - 1 , $color_gray); 
for ($i=10;$i<$imgH;$i+=10) 
 imageline($image, 0, $i, $imgW, $i, $color_gray); 
imagettftext($image,16,5,3,25,$color_black,$fontName,$randStr); 
for ($i=10;$i<$imgW;$i+=10) 
 imageline($image, $i, 0, $i, $imgH, $color_gray); 
imagepng($image); 
imagedestroy($image); 
} 
 
$a=GetCode(1,1); 
$b=GetCode(1,1); 
$c=GetCode(1,1); 
$Passport=$a."+".$b."+".$c; 
$Total=$a+$b+$c; 
$Total; 
$_SESSION[$_GET[&#39;Action&#39;]]=md5(strtoupper($Total)); 
createAuthNumImg($Passport,$_GET[&#39;imgW&#39;],$_GET[&#39;imgH&#39;],"verdana.ttf"); 
?>

Recommandations associées :

Explication détaillée de la façon dont PHP affiche les données d'image hexadécimales sur la page Web

Explication détaillée de ThinkPHP $ Utilisation de la carte

Explication détaillée de la façon dont ThinkPHP génère et vérifie les codes de vérification

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