Les Allergies
Alimentaires
Posez votre question Signaler

Image PHP anti-bot [Résolu]

gardiendelanuit 998Messages postés 20 décembre 2007Date d'inscription 23 mai 2012Dernière intervention - Dernière réponse le 12 févr. 2012 à 11:03
Bonjour,
Voilà j'ai un problème au niveau de la génération de l'image anti-bots par PHP (dans un formulaire d'inscription).
En effet j'ai récupéré un code me permettant de générer une image aléatoirement avec du texte.
Seulement je ne sais pas l'afficher: le code php est censé afficher l'image grâce à imagepng($image); dans le fichier php et j'ai vu qu'on pouvais faire <img src="PHPs/tag_antibots.php" /> sur la page html mais je n'ai rien si ce n'est à la place du lien pas mal de warning et autre.
Voici le code:
<?php

session_start(); /*on ouvre la session (et la recharge si deja ouverte)*/
header("Content-type: image/png");

$ttexte = '15'; // Taille du text affiché.
// On dit quel police de caractere l'on utilise.
putenv('GDFONTPATH=' . realpath('.'));
$font = 'vintv';

//On genere une image
$image = imagecreate('145','34');

$gris = imagecolorallocate($image,230,230,230); //gris
$vert = imagecolorallocate($image,0,255,0); //vert
$noir = imagecolorallocate($image,0,0,0); //noir
$rouge = imagecolorallocate($image,255,0,0); //rouge
$bleu = imagecolorallocate($image,0,0,255); //bleu


//On va generer le text a afficher sur l'image.
$aleat = array('A','B','C','D','E','2','F','G','H','3','J','K','4','L','M','N','5','O','P','Q','6','R','S','T','U','7','V','W','X','8','Y','Z','9');
shuffle($aleat);


//On affiche le text sur l'image.
$count = '0';
$x='0';
while($count <= '7')//J'ai mis 7 et pas 8, car meme si j'affiche 8 caractere je commence a compter a partir de 0.
{
$y = mt_rand(15, 30); // Position alehatoire pour la hauteur de chaque caractere.
$rotation = mt_rand(-20, 20); // Pour l'orientation (c'est pour sa que les lettre s'oriente vert la droite ou la gauche).
imagettftext($image, $ttexte, $rotation, $x, $y, $noir, $font, $aleat[$count]);//On ecris
$x=$x+'18';//On change la variable pour ecrire le caractere suivent
++$count;
}
//On ecris la variable de SESSION
$_SESSION['image_validation'] = $aleat['0'].$aleat['1'].$aleat['2'].$aleat['3'].$aleat['4'].$aleat['5'].$aleat['6'].$aleat['7'];

$point = '1';
while($point <= 120) // Boucle pour faire 120 point de chaque couleur (Bleu / Noir / rouge).
{
//On tire la position aléatoire pour le point bleu.
$x = mt_rand(0,145);
$y = mt_rand(0,34);
ImageSetPixel($image, $x, $y, $bleu);//Et on l'affiche
//On tire la position alehatoire pour le point noir.
$x = mt_rand(0,145);
$y = mt_rand(0,34);
ImageSetPixel($image, $x, $y, $noir);
//On tire la position alehatoire pour le point rouge.
$x = mt_rand(0,145);
$y = mt_rand(0,34);
ImageSetPixel($image, $x, $y, $rouge);
++$point;
}

imagepng($image); //on Affiche l'image.
?>

*
Merci d'avance pour vos réponses.
Lire la suite 

Image PHP anti-bot »

2 réponses
Réponse
+0
moins plus
Hello,

Je te conseil de suivre ce tutoriel : http://repo.zenk-security.com/Programmation/Image%20anti-bot%20et%20fichier%20wav%20.pdf
Ajouter un commentaire
Réponse
+0
moins plus
Merci, mais j'ai trouvé le problème:
$font = 'vintv';
Il fallait remplacer vintv par le nom du fichier font .ttf qu'on voulait employer (préalablement mis sur son serveur).
Ajouter un commentaire
Ce document intitulé « Image PHP anti-bot » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?