1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
<?php
/* Cette captcha est loin d'être parfaite, elle est présenté à titre d'exemple,
si vous avez des améliorations, n'hésitez surtout pas à poster ici même,
merci à vous. =) */
// On initialise les sessions
session_start();
// On met le header pour créer une image au format PNG
header("Content-type: image/png");
// On définit dans une variable $img les dimensions de l'image (captcha)
$img = imagecreate("100", "40");
/* On définit dans une variable $white la couleur pour le fond de l'image en format RVG
(blanc/white) avec pour parametre $img */
$white = imagecolorallocate($img, 255, 255, 255);
// comme pour le fond mais cette fois-ci pour la couleur du texte de la captcha (noir/black)
$black = imagecolorallocate($img, 0, 0, 0);
/* On définit dans la variable $key notre clé pour le hashage de notre captcha,
il est très fortement conseillé de la changer, j'ai mis ça pour l'exemple UNIQUEMENT ! */
$key = "azertyuiop";
// On mélange tous les caractères de la variable $key grâce à la fonction str_shuffle().
$key = str_shuffle($key);
/* On utilise la fonction substr() pour afficher quelques caractères bien spécifiques
et non pas toute la chaine $key. */
$key = substr($key, 7, 8);
$key = substr($key, 1, 2).substr($key, -5, 5);
// On cée la session 'captcha' qui vaut
$_SESSION['captcha'] = sha1($key);
// On assigne les couleurs...
imagestring($img, 5, 20, 12, $key, $black);
imagecolortransparent($img, $white);
/* ...Et enfin on crée notre image PNG grâce à la fonction imagepng() qui prend
comme argument la variable $img. */
imagepng($img);
?> |
Partager