Formulaire avec captcha et recuperation dans email
Bonjour,j'aide un ami (enfin j 'essaie;)) à développer un formulaire avec captcha puis récuperation du formulaire dans email.
j 'y arrive sans problème SANS le captcha
Code:
<form action=formmail.php method="post">
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php
$TO = "myemail@yahoo.fr";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: ..../ok.html");
?> |
J ai récupéré un captcha qui fonctionne très bien. Cependant là ou l affaire se corse, c'est quand je dois récupérer les données dans l 'email !!!
voila le code captcha que j ai récupéré :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| <?php
#
# Editer ces variables
#
# répertoire des images sous la forme a.gif, b.gif, 1.gif, etc.
$rep_lettres = "captcha/";
# nombre de caractères (repris dans maxlength)
$nbrchars = 4;
# fichier de redirection, affichant la confirmation
$confirmation = "formmail.php";
#
# fin de l'édition
#
session_start();
$imagecode = "";
$erreur = ""; # toutes erreurs formulaire
# le formulaire a été envoyé on vérifie la correspondance
if($_POST && $_POST['vateuf'] != $_SESSION['code']) {
$erreur = "Les caractères ne correspondent pas !";
$_POST['vateuf'] = "";
}
# pas de session code ou demande d'un nouveau code
# implémentation des sessions (si le répertoire existe)
if((!$_SESSION['code'] || $_GET['newcode']) && $dossier = @opendir($rep_lettres)) {
# si un nouveau code a été demandé on efface la session
if($_GET['newcode']) $_SESSION['code'] = "";
while ($fichier = @readdir($dossier)) {
if( $fichier == "." || $fichier == ".." || is_dir($fichier) ) continue;
# on implémente le tableau $alphabet des fichiers/caractères
$alphabet[] = $fichier;
}
@closedir($dossier);
$nbrimg = count($alphabet)-1;
# tirage au sort des $nbrchars caractères composant le code
for($i=0; $i<$nbrchars; $i++)
$lettre[] = rand(0,$nbrimg);
# implémentation de l'image $imagecode affichée,
# de la session 'code' contenant la série de caractères à comparer
# et des $nbrchars sessions préfixées par 'img_'
$i=0;
foreach($lettre as $val) {
$imagecode .= "<img src='$rep_lettres$alphabet[$val]' alt=''>";
$_SESSION['code'] .= basename($alphabet[$val],'.gif');
$_SESSION['img_'.$i] = $alphabet[$val];
$i++;
}
# composition de l'image $imagecode si la session est implémentée
} elseif($_SESSION['code']) {
for($i=0; $i<$nbrchars; $i++)
$imagecode .= "<img src='".$rep_lettres.$_SESSION['img_'.$i]."' alt=''>";
}
if($_POST && !strlen($erreur)) {
# pas d'erreur de code : traitement des éléments de formulaire...
# ... une fois tout vérifié et mail envoyé on efface la session
$_SESSION['code'] = "";
# redirection vers $confirmation où l'on affiche un message
# grâce à la variable $_GET['mailok']
@header('Location: '.$confirmation.'?mailok=1');
exit;
}
?>
<!-- formulaire simplifié -->
<!-- script développé par Pierre Pesty http://dev.ppan.net -->
<form action="<?= $_SERVER['PHP_SELF']?>" method="post">
<? if(strlen($erreur)) { ?>
<? echo "$erreur\n"?>
<? } ?>
<br/>
<tr><td class="style5">Nom:</td>
<td class="style1" style="width: 231px">
<input type=text name=nom size=30 class="style2" value="Votre Nom"></td></tr>
<br/>
<? if($imagecode) { ?><br/>
<? echo "$imagecode\n"?><input type="text" name="vateuf" size="<?=$nbrchars?>" maxlength="<?= $nbrchars?>" value="<?= htmlentities($_POST['vateuf'],ENT_QUOTES)?>">
<br/>Recopiez les caractères à gauche SVP <a href="<?= $_SERVER['PHP_SELF']."?newcode=1"?>">Nouveau</a>
<? } ?>
<br/><input type="submit" value="Envoyer">
</form> |
j ai mis a la ligne 10 "formmail.php".
En faisant ça, je suis bien obligé de remplir le captcha, je reçoit bien l email, mais sans aucun contenu !
Maintenant si j essaie de mettre :
ligne 10, un fichier ok.html (de confirmation)
ligne 70 action"formmail.php"
cela me renvoie toute mes infos, mais le captcha ne fonctionne plus !
En résumé soit le captcha fonctionne mais je ne recoit pas les données rentrées, soit je recois les données mais je ne suis pas obliger de remplir le captcha !
J aimerai savoir si je suis sur la bonne voix et si quelqu un à une solution a me proposer !!
cordialement, Hoyoko