Qu'est-ce qu'un code de vérification ?
Le code de vérification consiste à générer une image à partir d'une chaîne de chiffres ou de symboles générés aléatoirement. Certains pixels d'interférence sont ajoutés à l'image (pour empêcher l'OCR). L'utilisateur peut identifier les informations du code de vérification à l'œil nu et saisir le code. formulaire à soumettre pour vérification du site Web, une fonction ne peut être utilisée qu'après une vérification réussie.
Le rôle du code de vérification :
Empêche efficacement un pirate informatique de faire des tentatives de connexion continues à un utilisateur enregistré spécifique en utilisant un programme spécifique pour forcer brutalement. En fait, les codes de vérification modernes empêchent généralement les machines de s'enregistrer par lots et de publier des réponses par lots. À l'heure actuelle, de nombreux sites Web utilisent la technologie des codes de vérification pour empêcher les utilisateurs d'utiliser des robots pour s'inscrire, se connecter automatiquement et envoyer du spam.
Ce dont nous parlons principalement ici, c'est du code de vérification aléatoire de l'image numérique. Les caractères sur les images sont relativement réguliers, certains peuvent contenir des interférons aléatoires ajoutés et d'autres ont des couleurs de caractères aléatoires.
Publiez une image de base qui génère un code de vérification d'image png :
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 Code
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. 8. Libérez la mémoire occupée par l'image
Ce qui suit est un exemple de code de vérification PHP :
<?php //设置session,必须处于脚本最顶部 session_start(); $image = imagecreatetruecolor(100, 30); //1>设置验证码图片大小的函数 //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue); $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色 imagefill($image, 0, 0, $bgcolor); //10>设置变量 $captcha_code = ""; //7>生成随机数字 for($i=0;$i<4;$i++){ //设置字体大小 $fontsize = 6; //设置字体颜色,随机颜色 $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //0-120深颜色 //设置数字 $fontcontent = rand(0,9); //10>.=连续定义变量 $captcha_code .= $fontcontent; //设置坐标 $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } //10>存到session $_SESSION['authcode'] = $captcha_code; //8>增加干扰元素,设置雪花点 for($i=0;$i<200;$i++){ //设置点的颜色,50-200颜色比数字浅,不干扰阅读 $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200)); //imagesetpixel — 画一个单一像素 imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor); } //9>增加干扰元素,设置横线 for($i=0;$i<4;$i++){ //设置线的颜色 $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220)); //设置线,两点一线 imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor); } //2>设置头部,image/png header('Content-Type: image/png'); //3>imagepng() 建立png图形函数 imagepng($image); //4>imagedestroy() 结束图形函数 销毁$image imagedestroy($image); ?>Après avoir utilisé le fichier de code de vérification, vous obtiendrez une image similaire à celle-ci : Cliquez sur l'image du code de vérification dans le coin supérieur gauche, et le numéro à 4 chiffres obtenu changera.