par
moogli » 19 janv. 2011, 20:45
aller je suis sympa et je me suis amuser un peu
pour captcha.php il te faut
<?php
/* Fichier captcha.png.php */
session_start();
function ChaineAleatoire($nbcar){
$chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
srand((double)microtime()*1000000);
$variable = '';
for($i=0; $i<$nbcar; $i++) $variable .= $chaine{rand()%strlen($chaine)};
return $variable;
}
// on place en session la chaine qui sera à vérifier lors de la validation du formulaire
$_SESSION['Captcha'] = ChaineAleatoire(5);
// création de l'image a toi de voir la taille qui te convient en fonction de la police
$img = imagecreate (175,50) or die ("Problème de création GD");
$white = imagecolorallocate ($img, 255, 255,255); // le blanc
$grey = imagecolorallocate($img, 128, 128, 128); // le gris
$black = imagecolorallocate($img, 0, 0, 0); // le noir
// le fichier de police a utiliser pour l'affichage
$font = 'fonts/HITROAD.ttf';
//imagettftext(image , taille , angle , X , Y , couleur , fontfile , texte);
$abscisse = 15; // abscisse de base pour la première lettre du texte
// ordonnée du texte dans l'image, c'est valable pour toutes les lettres
$ordonnée = imagesy($img) -(imagesy($img)/4);
// nb de caractère
$taille = strlen($_SESSION['Captcha']);
// permet de gérer l'espace entre les lettres pour éviter le chevauchement
$espaceentreleslettres = 25;
// permet d'afficher la suite suivant un angle différent à chaque fois
for ($i=0;$i<$taille;$i++){
$text = $_SESSION['Captcha'][ $i ];//la lettre a afficher
$abs = $abscisse + $espaceentreleslettres*$i;//on définis sont abscisse
$angle = rand(-20,20);// on choisis l'angle au pif entre -20 et 20
// on affiche deux fois la chose pour fair un effet d'ombre :) (d'où le 2 sur l'abscisse)
imagettftext($img , 25 , $angle , $abs-2 , $ordonnée , $grey , $font , $text);
//le texte sur le devant en noir
imagettftext($img , 25 , $angle , $abs , $ordonnée , $black , $font , $text);
}
// on envoi le type de l'image au navigateur
header("Content-type: image/png");
// on affiche l'image
imagepng($img);
?>
n'oublie pas d'indiquer un fichier de fonts valide avant de dire que ça marche pas
@+
aller je suis sympa et je me suis amuser un peu
pour captcha.php il te faut
[php]
<?php
/* Fichier captcha.png.php */
session_start();
function ChaineAleatoire($nbcar){
$chaine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
srand((double)microtime()*1000000);
$variable = '';
for($i=0; $i<$nbcar; $i++) $variable .= $chaine{rand()%strlen($chaine)};
return $variable;
}
// on place en session la chaine qui sera à vérifier lors de la validation du formulaire
$_SESSION['Captcha'] = ChaineAleatoire(5);
// création de l'image a toi de voir la taille qui te convient en fonction de la police
$img = imagecreate (175,50) or die ("Problème de création GD");
$white = imagecolorallocate ($img, 255, 255,255); // le blanc
$grey = imagecolorallocate($img, 128, 128, 128); // le gris
$black = imagecolorallocate($img, 0, 0, 0); // le noir
// le fichier de police a utiliser pour l'affichage
$font = 'fonts/HITROAD.ttf';
//imagettftext(image , taille , angle , X , Y , couleur , fontfile , texte);
$abscisse = 15; // abscisse de base pour la première lettre du texte
// ordonnée du texte dans l'image, c'est valable pour toutes les lettres
$ordonnée = imagesy($img) -(imagesy($img)/4);
// nb de caractère
$taille = strlen($_SESSION['Captcha']);
// permet de gérer l'espace entre les lettres pour éviter le chevauchement
$espaceentreleslettres = 25;
// permet d'afficher la suite suivant un angle différent à chaque fois
for ($i=0;$i<$taille;$i++){
$text = $_SESSION['Captcha'][ $i ];//la lettre a afficher
$abs = $abscisse + $espaceentreleslettres*$i;//on définis sont abscisse
$angle = rand(-20,20);// on choisis l'angle au pif entre -20 et 20
// on affiche deux fois la chose pour fair un effet d'ombre :) (d'où le 2 sur l'abscisse)
imagettftext($img , 25 , $angle , $abs-2 , $ordonnée , $grey , $font , $text);
//le texte sur le devant en noir
imagettftext($img , 25 , $angle , $abs , $ordonnée , $black , $font , $text);
}
// on envoi le type de l'image au navigateur
header("Content-type: image/png");
// on affiche l'image
imagepng($img);
?>[/php]
n'oublie pas d'indiquer un fichier de fonts valide avant de dire que ça marche pas :)
@+