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 : Sélectionner tout - Visualiser dans une fenêtre à part <form action=formmail.php method="post">
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 !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); ?>
voila le code captcha que j ai récupéré :
j ai mis a la ligne 10 "formmail.php".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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
Partager