Créer un compte
Connexion

Formulaire avec Captcha

Pour créer et répondre aux sujets, vous devez être connecté.
Pages: 1
Auteur Message
azerty
21/07/2011 à 11:45:58
Plus tu pédales moins fort et moins tu vas plus vite ! azerty
Membre
Bonjour à tous,

J'ai vu certains tuto, très bien faitys d'ailleurs, bravo aux développeurs, mais j'ai un petit problème concernant le formulaire avec le captcha.

En effet, sur ce site, c'est parfait, donc, je l'ai téléchargé.

J'ai essayé en local et il n'y avait pas d'image Captcha.
Je me suis dit qu'en le mettant en ligne, ça va aller mieux... et bien, c'est pareil, toujours pas d'images Captcha !

Y aurait-il quelque chose de spécial à faire par hasard ?

Merci de votre aide.

Cordialement.
Azerty


Cordialement
Azerty

Image
Lolo44
21/07/2011 à 11:52:17
Lolo44
Membre
Envoi nous l'URL de la page en ligne contenant le captcha stp

azerty
21/07/2011 à 19:13:00
Plus tu pédales moins fort et moins tu vas plus vite ! azerty
Membre
En local, pas de problème, il n'y a qu'en ligne où ca bloque à session_star()

Voilà l'url : Pas de captchat

Cordialement
Azerty

Image
Lolo44
21/07/2011 à 19:17:44
Lolo44
Membre
Tu as du mettre 2 header , envoie le code egalement.

azerty
21/07/2011 à 19:25:55
Plus tu pédales moins fort et moins tu vas plus vite ! azerty
Membre
formulaire.php
<html>
<head>
<title></title>
</head>
<body>

<?php
session_start();
//On verifie si le formulaire a ete valide
if(isset($_POST['nom'], $_POST['captcha'], $_SESSION['captcha']))
{
        //On compare le code entre par lutilisateur avec celui de limage(qui avait ete stoque dans les sessions)
        if(strtolower($_POST['captcha'])==strtolower($_SESSION['captcha']))
        {
                unset($_SESSION['captcha']);
                echo '<strong style="color:#00bb00;">Le code que vous avez entré est le bon.</strong>';
                $form = false;
                //Ici, vous pouvez envoyer les donnes du formulaire
        }
        else
        {
                echo '<strong style="color:#bb0000;">Le code que vous avez entré est mauvais, veuillez réessayer.</strong>';
                $form = true;
        }
}
else
{
        $form = true;
}
//Si $form vaut true, le formulaire sera affiche
if($form)
{
?>
<form action="formulaire.php" method="post">
Votre nom:<input type="text" name="nom" value="<?php if(isset($_POST['nom'])){echo htmlentities($_POST['nom']);} ?>" /><br />
Veuillez recopier le code cidessous:<input type="text" name="captcha" /><br />
<img src="captcha.php" alt="CAPTCHA" /><br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
?>
</body>
</html>
 

captcha.php
<html>
<head>
<title></title>
</head>
<body>

<?php
//Le nombre de caracteres
$ncarac = 5;
//Le nombre de lignes
$nlignes = 7;
//Les caractres qui seront utilises
$carac = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$nca = count($carac);//On determine le nombre de lettres possible: 26
//Police de caractere a utiliser
$font = 'liberation_sans.ttf';
//On determine les tailles de limage
$x = $ncarac*30+10;
$y = 40;
//On cree limage
$img = imagecreatetruecolor($x,$y);
//On remplit l'image avec du blanc
imagefill($img,0,0,imagecolorallocate($img, 255,255,255));
//On ajoute les caracteres
$chaine = "";
for($i=1;$i<=$ncarac;$i++)//On ajoute $ncarac caracteres
{
        $c = $carac[rand(0,($nca-1))];//Le nouveau caractere sera choisi aleatoirement
        imagettftext($img, 25, rand(-10,10), (($i-1)*30)+5, 30, imagecolorallocate($img, rand(0,100), rand(0,100), rand(0,100)),$font, $c);//On ajoute le caractere sur limage
        $chaine .= $c;//On ajoute le nouveau caractere a la chaine
}
//On ajoute les lignes
for($i=1;$i<=$nlignes;$i++)//On ajoute "$nlignes" lignes
{
        imagesetthickness($img,rand(1,2));//On specifie lepaisseur de la ligne
        imageline($img,rand(0,$x),rand(0,$y),rand(0,$x),rand(0,$y), imagecolorallocate($img, rand(0,100), rand(0,100), rand(0,100)));//On ajoute la ligne
}
//On stoque la chaine de caractere dans les sessions
session_start();
$_SESSION['captcha'] = $chaine;
//On affiche l'image finale
header('Content-type: image/png');
imagepng($img);
?>
</body>
</html>
 


Cordialement
Azerty

Image
azerty
21/07/2011 à 19:31:42
Plus tu pédales moins fort et moins tu vas plus vite ! azerty
Membre
OK, c'était bien ça, j'ai pas fait gaffe ! Plus de prb avec session_star(), par contre, toujours pas d'images Captcha !


Cordialement
Azerty

Image
Lolo44
21/07/2011 à 20:12:53
Lolo44
Membre
L'image retourne : Could not find/open font
Donc la police n'est pas bien placée
Elle doit etre a cette adresse : http://qi98.free.fr/temp/liberation_sans.ttf

azerty
21/07/2011 à 20:24:28
Plus tu pédales moins fort et moins tu vas plus vite ! azerty
Membre
C'est ok maintenant ! Effectivement, c'était la police !
J'avais pas fait le rapprochement.

Tu as de très bons yeux.
Merci beaucoup de ton aide.

A+

Cordialement
Azerty

Image
Lolo44
21/07/2011 à 21:41:59
Lolo44
Membre
Avec plaisir ^^

Pages: 1