Image PHP anti-bot

[Résolu/Fermé]
Signaler
Messages postés
1769
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
-
Messages postés
1769
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
-
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.


2 réponses

Messages postés
1094
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
31 mai 2019
163
Messages postés
1769
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
256
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).