Cet article présente principalement les idées de production et les méthodes d'implémentation du code de vérification PHP. Nous ne pouvons pas implémenter aveuglément PHP pour générer des codes de vérification. Nous devons comprendre les principes de base des codes de vérification PHP et vraiment maîtriser les méthodes d'implémentation des codes de vérification PHP. est nécessaire. Les amis peuvent s'y référer. J'espère que cela aide tout le monde.
1. Idées de production
Étant donné que les codes d'enregistrement sont souvent utilisés lors de l'enregistrement pour empêcher l'enregistrement malveillant des machines, je publie ici une image de base qui génère un code de vérification d'image png , analyse d'idée simple :
1. Générez une image png
2. Définissez la couleur d'arrière-plan de l'image
3. Définissez la couleur et le style de la police
4. Code de vérification aléatoire avec des chiffres
5. Ajustez l'angle de rotation et la position de chaque caractère généré et dessinez-le sur l'image png
6. Ajoutez des lignes de bruit et d'interférence pour empêcher les machines d'enregistrement d'analyser l'image originale pour un enregistrement malveillant
🎜> 7. Sortir l'image
8. Libérer la mémoire occupée par l'image
2. Méthode d'implémentation
fichier authcode.php
<?php session_start (); header ( 'Content-type: image/png' ); //创建图片 $im = imagecreate($x=130,$y=45 ); $bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色 $fontColor = imageColorAllocate ( $im, 255, 255, 255 ); //字体颜色 $fontstyle = 'rock.ttf'; //字体样式,这个可以从c:\windows\Fonts\文件夹下找到,我把它放到和authcode.php文件同一个目录,这里可以替换其他的字体样式 //产生随机字符 for($i = 0; $i < 4; $i ++) { $randAsciiNumArray = array (rand(48,57),rand(65,90)); $randAsciiNum = $randAsciiNumArray [rand ( 0, 1 )]; $randStr = chr ( $randAsciiNum ); imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr); $authcode .= $randStr; } $_SESSION['authcode'] = $randFourStr;//用户和用户输入的验证码做比较 //干扰线 for ($i=0;$i<8;$i++){ $lineColor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor); } //干扰点 for ($i=0;$i<250;$i++){ imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor); } imagepng($im); imagedestroy($im); ?>
Rendu :
Recommandations associées :
Comment utiliser php pour envoyer des codes de vérification par SMS
Laravel's bibliothèque de codes de vérification
Comment résoudre le problème selon lequel l'image du code de vérification n'apparaît pas dans ecshop
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!