Dans PHP, si vous souhaitez afficher des images via le navigateur ou générer des images dynamiques (telles que le code de vérification), vous devez utiliser la fonction d'en-tête () pour définir l'en-tête de réponse pour indiquer au navigateur qu'il renvoie un type d'image, plutôt qu'un texte normal ou une page HTML.
Dans cet article, nous présenterons comment utiliser la fonction d'en-tête () de PHP pour générer et renvoyer des images de code de vérification. Les codes de vérification sont largement utilisés dans l'enregistrement du site Web, la connexion et d'autres scénarios, et sont utilisés pour empêcher les robots de soumettre automatiquement les formulaires.
Générer des images de code de vérification nécessite généralement les étapes suivantes:
Générer des caractères de code de vérification aléatoire : Le contenu du code de vérification peut être un nombre, une lettre ou une combinaison de nombres et de lettres.
Créez une ressource d'image : créez une image vierge à l'aide de la fonction ImageRereate () ou ImageCreateTrueColor () .
Dessiner du texte : dessiner des caractères de code de vérification sur les images, en utilisant généralement des fonctions ImageTtFText () ou Imagestring () .
Définissez l'en-tête de réponse : utilisez la fonction en-tête () pour informer le navigateur du type d'image.
Image de sortie : Sortie de l'image vers le navigateur via ImagePng () , ImageJPEG () et d'autres fonctions.
Détruisez les ressources d'image : utilisez la fonction IMAgestRoy () pour libérer les ressources d'image.
Voici un exemple de code qui crée et renvoie une image de code de vérification à l'aide de PHP:
<?php
// Définissez l'en-tête de réponse,Dites au navigateur qu'il renvoie une image
header("Content-Type: image/png");
// Créer une image vierge,La largeur est 120px,La hauteur est 40px
$width = 120;
$height = 40;
$image = imagecreate($width, $height);
// Définir la couleur de l'arrière-plan et la couleur du texte
$background_color = imagecolorallocate($image, 255, 255, 255); // Fond blanc
$text_color = imagecolorallocate($image, 0, 0, 0); // Texte noir
// Générer des caractères de code de vérification aléatoire
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$captcha_text = substr(str_shuffle($characters), 0, 5);
// Dessinez le texte du code de vérification sur l'image
imagestring($image, 5, 30, 10, $captcha_text, $text_color);
// Image de sortie
imagepng($image);
// Détruiser les ressources d'image,Mémoire libre
imagedestroy($image);
?>
Définissez l'en-tête de réponse : en-tête ("contenu-type: image / png"); Cette ligne définit l'en-tête de réponse pour indiquer au navigateur que le contenu renvoyé est une image au format PNG. Vous pouvez passer à d'autres formats d'image en fonction de vos besoins, tels que JPEG ( image / jpeg ).
Créer une ressource d'image : ImageCreate ($ width, $ height); Crée une image vierge avec une largeur et une hauteur spécifiées, renvoyant une ressource d'image.
Définir les couleurs : ImageColorAllocate ($ Image, 255, 255, 255); et ImageColorAllocate ($ Image, 0, 0); Utilisé pour définir la couleur d'arrière-plan (blanc) et la couleur du texte (noir) de l'image.
Générer un code de vérification aléatoire : substr (str_shuffle ($ caractères), 0, 5); Cette ligne de code sélectionnera au hasard 5 caractères dans un jeu de caractères comme code de vérification.
Draw Text : ImageString ($ Image, 5, 30, 10, $ captcha_text, $ text_color); Responsable du dessin du texte du code de vérification généré sur l'image.
Image de sortie : imagepng ($ image); Sortez l'image vers le navigateur et le navigateur l'affichera automatiquement en tant qu'image.
Détruiser les ressources d'image : ImageDestroy ($ Image); est utilisé pour libérer des ressources d'image pour éviter les fuites de mémoire.
Si vous avez besoin de référencer des ressources externes telles que des polices, des images, etc. Lorsque vous générez des codes de vérification, l'adresse URL peut être impliquée. Dans ce cas, nous pouvons remplacer le nom de domaine de l'URL par m66.net , par exemple:
Étiquettes associées:
header