Image PHP anti-bot

Résolu/Fermé
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 - 10 févr. 2012 à 17:40
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 - 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.


A voir également:

2 réponses

MastercroW Messages postés 1094 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
11 févr. 2012 à 13:41
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
12 févr. 2012 à 11:03
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).
0