session_start(); /** * Génère un code au hasard de 6 caractères */ $passe = ''; $caracteres = 'abcdefpruvx368'; $cnt = strlen($caracteres)-1; for($i = 0; $i < 6; $i++) { $char = mt_rand(0,$cnt); $passe .= $caracteres[$char]; } /** * Stocke ce code dans une session */ $_SESSION['code']=$passe; /** * On génère ensuite l'image associée au code */ $image=imagecreate(210,70) OR exit; header ('Content-type: image/gif'); /** * Prépare le fond de l'image */ $fond=imagecolorallocate($image,255,255,255); /** * Dessine le cadrillage */ $i=0; $couleur_ligne=imagecolorallocate($image,230,230,230); while($i<70) { imageline($image,0,$i,210,$i,$couleur_ligne); $i+=5; } $i=0; while($i<210) { imageline($image,$i,0,$i,70,$couleur_ligne); $i+=5; } /** * Dessine les caractères sur l'image */ $nb_caracteres=strlen($_SESSION['code']); //7 caractères par défaut $i=0; $pos_x=-5; while($i<$nb_caracteres) { /** * Génération d'une couleur aléatoire dont les tons n'approchent pas le blanc * afin de rester visible */ $couleur1=mt_rand(0,220); $couleur2=mt_rand(0,220); $couleur3=mt_rand(0,220); $pos_x += mt_rand(25,35); //position horizontale du caractère $pos_y = mt_rand(35,50); //position verticale du caractère $taille = mt_rand(35, 50); //Taille de la police $angle = mt_rand(5,70); //Inclinaison $couleur = imagecolorallocate($image,$couleur1,$couleur2,$couleur3); imagettftext($image, $taille , $angle , $pos_x, $pos_y, $couleur, './core/JOURNAL.TTF', $_SESSION['code'][$i]); $i++; } imagefilter($image, IMG_FILTER_MEAN_REMOVAL); $matrice = array(array(-1.1,2.0,3.0), array(-2.0,3.0,-1.0), array(-1.0 ,3.9, 3.0)); imageconvolution($image, $matrice, 10, 0); imagegif($image);