Problème d'envoi du contenu d'un champ "HIDDEN" avec une fonction mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'envoi du contenu d'un champ "HIDDEN" avec une fonction mail

par Junfan » 26 juil. 2007, 12:58

Merci de ta réponse ;)

Je vais essayé le var_dump ce soir ou demain, car là je ne suis pas chez moi...

Mais, si je coche des cases et que je valide sans avoir rempli les champs obligatoires, ca rafraichi la page, et m'affiche le contenu des cases cochées avec un echo $choix....
Donc apparemment je récupère bien la valeur des cases cochées non ?

Edit:
Alors si je place le var_dump avec la variable $choix dans la boucle for :

Code : Tout sélectionner

<?php $cases = 8; for ($i = 1; $i <= $cases; $i++) { $vn="case".$i; $choix=$_POST[$vn]; echo("<pre>\n"); var_dump($choix); echo("</pre>\n");
Ca me retourne :

Code : Tout sélectionner

string(11) "Appartement" string(6) "Maison"
Dans ce cas là j'ai coché les cases "Appartement" et "Maison"

Si je place le var_dump avec la variable "$_POST" après ma déclaration de variable "POST" donc ici :

Code : Tout sélectionner

<?php if(isset($_POST['VALIDER'])){ $civilite = $_POST['CIVILITE']; $nom = $_POST['NOM']; $fonction = $_POST['FONCTION']; $societe = $_POST['SOCIETE']; //$bien = $_POST['BIEN']; $choix = $_POST['CHOIX']; $email = $_POST['EMAIL']; $telephone = $_POST['TEL']; $jour = $_POST['JOUR']; $heure = $_POST['HEURE']; $activite = $_POST['ACTIVITE']; $produit = $_POST['PRODUIT']; $message = $_POST['MSG']; $warning ="--- champ obligatoire ---"; echo("<pre>\n"); var_dump($_POST); echo("</pre>\n");
DCa me retourne :

Code : Tout sélectionner

array(9) { ["CIVILITE"]=> string(8) "Monsieur" ["NOM"]=> string(0) "" ["EMAIL"]=> string(0) "" ["TEL"]=> string(0) "" ["case1"]=> string(11) "Appartement" ["case2"]=> string(6) "Maison" ["CHOIX"]=> string(0) "" ["MSG"]=> string(0) "" ["VALIDER"]=> string(7) "Valider" }
Pour cela j'ai juste rafraichi la page en laissant les 2 cases cochés... Donc ca marche non ?
Mais alors, pourquoi je ne récupère pas la valeur de mes cases à cocher dans le mail ?

snif... :roll:

par Cyrano » 25 juil. 2007, 06:11

Tu ne peux récupérer que les valeur des cases qui ont été cochées : les autres n'envoient rien du tout.

Essaye de faire un :
echo("<pre>\n");
var_dump($_POST);
echo("</pre>\n");
Pour voir ce qui est exactement envoyé.

Problème d'envoi du contenu d'un champ "HIDDEN" av

par Junfan » 25 juil. 2007, 01:00

Bonjour à tous,
Premier post pour moi parmi vous, je ne suis pas vraiment débutant en php, mais je n'en fait pas régulièrement (ca fait même assez longtemps), j'ai donc décidé de poster dans la section "débutant"...

Je m'arrache les cheveux depuis plusieurs jours sur un problème invisible...

J'ai fais un formulaire avec champ texte, liste à choix, et checkbox... le tout envoyé par mail avec la fonction mail() avec succès, sauf en ce qui concerne les checkbox...

je poste ici juste le code concernant les checkbox...

Je déclare mes variable post en début de fichier :

Code : Tout sélectionner

<?php if(isset($_POST['VALIDER'])){ $civilite = $_POST['CIVILITE']; $nom = $_POST['NOM']; $choix = $_POST['CHOIX']; $email = $_POST['EMAIL']; $telephone = $_POST['TEL']; $message = $_POST['MSG']; $warning ="--- champ obligatoire ---";
Je test le contenu du formulaire avant de poster :

Code : Tout sélectionner

if(!empty($nom) && $nom !=$warning && !empty($email) && $email != $warning && $email != "--- email invalide ---" && eregi("^[_A-Za-z0-9.-]+@[A-Za-z0-9.-]{2,}[.][a-z]{2,3}$",$email) && !empty($telephone) && $telephone != $warning){ $msg .= "De: $civilite "; $msg .= "$nom\n"; $msg .= "Email: $email\n"; $msg .= "Tel: $telephone\n\n"; $msg .= "souhaite recevoir des renseignements � propos de : $choix\n\n"; $msg .= "Message:\n$message\n"; $maboite = "[email protected]"; $subject = "Demande d'information provenant du site machin "; $mailheaders = "From: $email<> \n"; $mailheaders .= "R�pondre: $email\n\n"; mail($maboite, $subject, $msg, $mailheaders); echo "<HTML><HEAD>"; echo "<BODY BGCOLOR='#FFFFFF'>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>&nbsp;</p>"; echo "<P align=center>Merci, ".$civilite." ".$nom; echo "<P align=center>"; echo "Votre requ&ecirc;te a bien &eacute;t&eacute; envoy&eacute;e !</P>"; echo "<P align=center>Nous y donnerons suite dans les plus brefs delais</P>"; echo "<br><br><br>"; echo "<p align='left'>&nbsp;</p> <p align='left'><font size='1'>Vous disposez d'un droit d'acc&egrave;s, de modification, de rectification et de suppression des donn&eacute;es qui vous concernent (art. 34 de la loi 'Informatique et Libert&eacute;s'). Pour l'exercer, adressez-vous � : machin - n� rue truc 59000 VILLE. TEL: 03.20.xx.xx.xx - FAX 03.20.xx.xx.xx email: �[email protected]</font></p>"; echo "</BODY></HTML>"; exit; }else{ if(empty($nom)){ $nom = "--- champ obligatoire ---"; } if(empty($email)){ $email = "--- champ obligatoire ---"; } if(empty($telephone)){ $telephone = "--- champ obligatoire ---"; } if(!empty($email) && !eregi("^[_A-Za-z0-9.-]+@[A-Za-z0-9.-]{2,}[.][a-z]{2,3}$",$email)){ $email = "--- email invalide ---"; } } } ?>
Je passe le reste sans intêret ici... on va directement aux checkbox :

Code : Tout sélectionner

<tr> <td class="td_form" width="170">Type de bien :</td> <td class="td_form" width="253"> <P> <input type="checkbox" name="case1" value="Appartement">&nbsp;Appartement <input type="checkbox" name="case2" value="Maison">&nbsp;Maison <input type="checkbox" name="case3" value="Terrain">&nbsp;Terrain <input type="checkbox" name="case4" value="Immeuble">&nbsp;Immeuble<br /> <input type="checkbox" name="case5" value="Garage">&nbsp;Garage <input type="checkbox" name="case6" value="Investissement">&nbsp;Investissement <input type="checkbox" name="case7" value="Co-propri&eacute;t&eacute;">&nbsp;Co-propri&eacute;t&eacute; <input type="checkbox" name="case8" value="Autre">&nbsp;Autre <input type="hidden" name="CHOIX" value="<?php $choix; ?>"><br /> <?php $cases = 8; for ($i = 1; $i <= $cases; $i++) { $vn="case".$i; $choix=$_POST[$vn]; echo $choix . ", "; } ?>
Je récupère donc le contenu des checkbox dans la variable $choix avec succès car en faisant un echo de $choix, ca marche..
Mais, Lorsque on valide le formulaire, l'email est bien envoyé, je récupère le contenu de tout les champs texte et autre, mais pas des checkbox.
Est-ce à cause du champ "HIDDEN" ? J'ai entendu parlé de problèmes avec les champs hidden.. serait-ce cela ? Avez vous un "truc" ?

Merci beaucoup de votre aide, je commence vraiment à craquer... :roll: