Page 1 sur 1

envoi formulaire et captcha (anti spam)

Posté : 29 déc. 2007, 01:05
par ddx
Bonjour,

Voilà j'ai réalisé un formulaire avec un antispams dit captcha,
Mon souci se trouve à l'envoi.
Pour vérifier mon formulaire (captcha) j'utilllise la première ligne pour le déclarer / form action ...
Alors ou dois-je mettre mon adresse mail pour l'envoi du formulaire..
voici le code:

Code : Tout sélectionner

<form action="verifier.php?<?PHP echo SID; ?>" method="post" id="contactform" name="contact"> <input type="hidden" name="recipient" value="[email protected]"/> <input type="hidden" name="redirect" value="http://www."/> <input type="hidden" name="subject" value="cool formulaire"/> <fieldset> <legend>Contact</legend> <label for="qui" id="label_qui"class="mandatory">Qui ? </label> <select name="subject" id="qui"> <option value="Famille Duperrex /// Pour Joya">Joya</option> <option value="Famille Duperrex /// Pour Annick">Annick</option> <option value="Famille Duperrex /// Pour David" >David</option> </select> <br /> <label for="nom" id="label_nom"class="mandatory">Votre nom * </label> <input class="text" id="nom" name="nom" type="text" /> <br /> <label for="email" id="label_email"class="mandatory">Votre courriel * </label> <input class="text" name="email" id="email" type="text" /> <br /> <label for="message" id="label_message"class="mandatory">Votre message * </label> <textarea name="message"id="message" rows="6" cols="30"></textarea> <br /> <label for="codes" id="label_codes" class="mandatory"> Recopier le code * </label> <input type="text" name="code" class="text"><br /> <label> </label> <?php dsp_crypt(0,1); ?> <input name="submit" type="submit" class="button"title="Envoyer le message" value="Envoyer" /> </fieldset> </form>
Form action sert à contrôler le formulaire si (captcha), mais je ne vois pas comment indiquer ou l'envoi de tout le formulaire doit atterir.

L'idée d'un CGI m'est venu, mais comment l'introduire dans ce code... Bref je suis un peu perdu
Si quelqu'un peut m'aider, c'est très volontiers.

A bientôt

ddx

Posté : 29 déc. 2007, 12:10
par Ryle
Les données de ton formulaire sont envoyées à la page verifier.php pour te permettre de contrôler le captcha. Puisque tu parles d'adresse mail, je suppose qu'avant ton formulaire avait pour action un mailto: qui t'envoyait automatiquement les données. Puisque tu abandonnes ce système pour pouvoir gérer le spam, il te faut malheureusement ré-implémenter cette fonctionnalité.

Ainsi dans ta page verifier.php après avoir contrôlé le captcha, il te faut récupérer toutes les valeurs des champs du formulaire et te les faire suivre à l'aide de la fonction mail() :)

Variables formulaire

Posté : 29 déc. 2007, 12:26
par ddx
Merci, je saisis mieux et en faisant un essai à blanc je vois que ça marche.
Voici mon fichier verifier.php

Code : Tout sélectionner

<?php $cryptinstall="crypt/cryptographp.fct.php"; include $cryptinstall; ?> <html> <?php if (chk_crypt($_POST['code'])) echo "<a><font color='#009700'>=> Bravo, vous avez saisi le bon code !</font></a>" ; else echo "<a><font color='#FF0000'>=> Erreur, le code est incorrect</font></a>" ; ?> <?php // Le message $message = "Line 1\nLine 2\nLine 3"; // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap() $message = wordwrap($message, 70); // Envoi du mail mail('[email protected]', 'Mon Sujet', $message); ?> </html>
Maintenant il faut que je reprenne les variables de mon tableau si j'ai bien compris, mais comment m'y prendre?.
Pouvez-vous me donner juste l'exemple des deux premiers champs? (imput)

Merci d'avance, je débute en PHP.
ddx :D

Posté : 29 déc. 2007, 14:55
par Ryle
Les données que tu envois via un formulaire sont disponibles via les variables superglobaes $_POST ou $_GET selon la méthode spécifiée dans le formulaire.

Ces deux variables sont des tableaux indexés. Tu peux ainsi accéder à la valeur de chaque champ en spécifiant l'index souhaité qui correspond au nom du champ du formulaire :
echo $_POST['recipient'];
echo $_POST['subject'];
...
L'instruction suivante te permet d'afficher tout le contenu de ton tableau pour vérifier index et valeurs (pour du débuggage ou de l'information) :
echo '<pre>';
print_r($_POST);
echo '</pre>';
Tu peux donc construire ton mail en insérant les valeurs récupérées de ton formulaire. Tu peux aussi rendre la chose dynamique en parcourant le tableau $_POST avec une boucle foreach() par exemple :
foreach ($_POST as $index => $valeur) {
  echo 'Le champ '. $index .' a pour valeur : '. $valeur .'<br />';
}
Voir la doc de foreach pour plus d'infos :)