Maison > développement back-end > Problème PHP > Quel est le processus de conception du code de vérification en php

Quel est le processus de conception du code de vérification en php

爱喝马黛茶的安东尼
Libérer: 2023-02-23 12:42:02
original
2343 Les gens l'ont consulté

Quel est le processus de conception du code de vérification en php

L'enregistrement du site Web, la connexion ou la page de message nécessitent tous un code d'enregistrement pour vérifier la légitimité de l'opérateur actuel, afin d'éviter que le site Web ne soit enregistré de manière malveillante par des machines.

Générer un code de vérification ne nécessite que quelques étapes. Tout d'abord, obtenez une chaîne aléatoire, puis créez un canevas, écrivez la chaîne générée sur le canevas, et nous pouvons également dessiner des lignes sur le canevas. et postez maintenant un code qui génère un code de vérification.

Recommandations associées : "Tutoriel de démarrage PHP"

Code source :

<?php
session_start(); //开启session
//创建随机码,并保存在session中
for($i=0;$i<4;$i++)
{
$_nmsg.=dechex(mt_rand(0,15));
}
//保存到session中
$_SESSION[&#39;code&#39;]=$_nmsg;
//设置图片长和高 
$_width=75;
$_height=25;
//创建一张图像
$_img=imagecreatetruecolor($_width,$_height); 
//白色背景
$_white=imagecolorallocate($_img,255,255,255);
//填充到背景上
imagefill($_img,0,0,$_white); 
//黑色边框
$_black=imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black); 
//随即画出5个线条
for($i=0;$i<5;$i++)
{
$_rnd_color=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color);
} 
//雪花
for($i=0;$i<10;$i++)
{
$_rnd_color=imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",$_rnd_color);
} 
//输出验证码 
for($i=0;$i<strlen($_SESSION[&#39;code&#39;]);$i++)
{
imagestring($_img,5,10+$i*15,mt_rand(0,10),$_SESSION[&#39;code&#39;][$i],$_blackr);
} 
//输出图像
header(&#39;Content-Type:image/png&#39;);
imagepng($_img);
//销毁图像
imagedestroy($_img);
?>
Copier après la connexion

Ce qui suit sera utilisé dans le code Fonction :

mt_rand — Générer de meilleurs nombres aléatoires

int mt_rand ([ int $min ], int $max ) De nombreux anciens générateurs de nombres aléatoires libc ont quelques bizarreries Certaines et propriétés inconnues et très lent. La fonction rand() de PHP utilise par défaut le générateur de nombres aléatoires libc.

La fonction mt_rand() est utilisée de manière informelle pour la remplacer. Cette fonction utilise les fonctionnalités connues de Mersenne Twister en tant que générateur de nombres aléatoires, capable de générer des valeurs aléatoires en moyenne quatre fois plus rapidement que rand() fourni par la libc.

dechex — Convertit le décimal en hexadécimal et renvoie une chaîne contenant la représentation hexadécimale du paramètre numérique donné. La valeur maximale pouvant être convertie est 4294967295 en décimal, ce qui donne "ffffffff".

imagecreatetruecolor — Créez une nouvelle image en vraies couleurs.

resource imagecreatetruecolor ( int $x_size , int $y_size )

imagecreatetruecolor() Renvoie un identifiant d'image représentant une image noire de taille x_size et y_size.

imagecolorallocate — Attribue une couleur à une image.

int imagecolorallocate ( ressource $image , int $red , int $green , int $blue )

imagecolorallocate() renvoie un identifiant représentant la couleur composée des composants RVB donnés. le rouge, le vert et le bleu sont respectivement les composants rouge, vert et bleu de la couleur souhaitée. Ces paramètres sont des entiers de 0 à 255 ou hexadécimaux de 0x00 à 0xFF. imagecolorallocate() doit être appelé pour créer chaque couleur utilisée dans l'image représentée par image.

imagefill — Remplissage de zone.

bool imagefill ( resource $image , int $x , int $y , int $color )

imagefill() aux coordonnées x, y de l'image image (le coin supérieur gauche de l'image est 0, 0 ) pour remplir la zone avec la couleur (c'est-à-dire que les points de la même couleur que les points x, y et les points adjacents seront remplis).

imagerectangle — Dessinez un rectangle.

bool imagerectangle ( ressource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )

imagerectangle() Dessiner dans l'image avec la couleur col Un rectangle a les coordonnées de son coin supérieur gauche comme x1, y1 et les coordonnées de son coin inférieur droit comme x2, y2. Le coin supérieur gauche de l'image a les coordonnées 0, 0.

imageline — Dessinez un segment de ligne.

bool imageline ( ressource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

imageline() Utiliser la couleur dans l'image de Draw un segment de ligne allant des coordonnées x1, y1 à x2, y2 (le coin supérieur gauche de l'image est 0, 0).

imagestring — Tracez une ligne de chaîne horizontalement.

bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )

imagestring() Dessine la chaîne s avec la couleur de couleur Go aux coordonnées x, y de l'image représentée par image (c'est la coordonnée du coin supérieur gauche de la chaîne, et le coin supérieur gauche de l'image entière est 0, 0). Si la police est 1, 2, 3, 4 ou 5, la police intégrée est utilisée.

imagepng — Génère une image au format PNG vers un navigateur ou un fichier

imagepng() Génère un flux d'image GD (image) au format PNG vers une sortie standard (généralement un navigateur), ou Si un nom de fichier est donné avec le nom de fichier puis sorti dans ce fichier.

imagedestroy — Détruire une image

imagedestroy() Libère la mémoire associée à l'image.

Enregistrez le code source sous code.php est un fichier php, comment devons-nous l'utiliser ?

imagepng a généré ce fichier php dans un fichier png

Appelez-le simplement directement.

<img src="mycode.php"/>
Copier après la connexion

Si vous souhaitez utiliser le code de vérification, pensez à ouvrir la session.

<?php
session_start();
echo $_SESSION[&#39;code&#39;];
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal