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
|
<?php
session_start(); // on démarre une session pour récupérer les variables de session
// C'est le fichier dynamique image.php et non button.png qui est appelé pour afficher l'image,
// on envoie donc un en-tête HTTP au navigateur via header() pour qu'il considère
// que image.php est une image de type PNG.
header("Content-type: image/png");
//header('Cache-control: no-cache');
$length = 6; // on veut un code ayant 6 caractères
$chars = strtoupper(substr(str_shuffle('23456789abcdefghjklmnpqrstuvwxyz'), 0, $length)); // les caractères prêtant à confusion ont été enlevés
$code = ''; // pour stocker le code que l'on va obtenir
// On veut obtenir un nombre ayant $length fois un caractère de $chars pris au hasard
for($i=0;$i<$length;$i++) {
// on concatène chaque caractères les uns à la suite des autres en utilisant le .
$code .= $chars{ mt_rand( 0, strlen($chars) - 1 ) };
//$code = md5($code); // si on crypte le code les caractères prêtant à confusion seront présents
$code = substr($code, 0, $length); // on le récupère sur $length caractères
} // fin boucle for()
//echo $code // pour le test
$_SESSION['code'] = $code; // pour récupérer le code dans la page index.php
//$string = $_GET['text']; // pour récupérer la valeur passée au script via les paramètres URL
// Creation de l'image button.png située dans le répertoire img
$image = imagecreatefrompng('img/button.png');
// On précise la couleur du texte de l'image
$texte_image = imagecolorallocate($image, 0, 48, 128);
// On utilise notre police personnalisée
$font = 'polices/ARLRDBD.ttf';
// On génère un nombre aléatoire pour une rotation entre -15 and 15 degrés
$rotate = rand(-5, 5);
// On dessine un texte avec une police TrueType
imagettftext($image, 16, $rotate, 11, 31, $texte_image, $font, $code);
// .. et on envoie notre image PNG au navigateur.
imagepng($image);
// L'image ayant été envoyée, on libère toute la mémoire qui lui est associée via imagedestroy()
imagedestroy($image);
?> |
Partager