Formulaire php

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 : Formulaire php

Re: Formulaire php

par stealth35 » 16 juin 2010, 20:26

il faut un isset aussi pour testé si $_POST['choixMail'] existe

Re: Formulaire php

par gmarcilly » 16 juin 2010, 10:28

Bonjour,

Et rebelote ! Maintenant que la parenthèse a été ajouté, il me remet ce message selon lequel ChoixMail n'est pas défini aux lignes 1 et 3 suivantes :

Code : Tout sélectionner

// On vérifie que la personne a bien choisi le destinataire if($_POST['choixMail'] === 'Tout le monde'){ $to = implode(', ', $listeDesMails); }elseif($_POST['choixMail'] && IsSet($listeDesMails[$_POST['choixMail']])){ $to = $listeDesMails[$_POST['choixMail']]; }else{ echo '<div style="text-align:center; color:#FF0000;">Veuillez choisir un destinataire ! Merci.<br /><br /></div>',"\r\n"; }
Que se passe t-il ? :(
Merci de ton aide

Re: Formulaire php

par stealth35 » 14 juin 2010, 16:29

Je ne comprend pas, il me met un parse error pour la première ligne du code que tu m'as envoyé :

Parse error: parse error in C:\wamp\www\Contacts.php on line 472

if (isset($_POST['choixMail']) {


Où est le blèm ?
t'as oublié une parenthèse :D (moi aussi j'ai recopié bêtement :mrgreen: )

if (isset($_POST['choixMail'])) {

Re: Formulaire php

par gmarcilly » 14 juin 2010, 16:25

Je ne comprend pas, il me met un parse error pour la première ligne du code que tu m'as envoyé :

Parse error: parse error in C:\wamp\www\Contacts.php on line 472

if (isset($_POST['choixMail']) {


Où est le blèm ?

Re: Formulaire php

par stealth35 » 14 juin 2010, 16:19

ca serai
if (isset($_POST['choixMail']) {
$choixMail = $_POST['choixMail'];
}
else
{
 $choixMail ='';
}

Re: Formulaire php

par gmarcilly » 14 juin 2010, 16:14

Voilà ce que j'ai mis comme code :

$choixMail = $_POST['choixMail'];

if (isset($_POST['choixMail']) {
}

Je comprend rien, ça ne marche pas. J'ai tout testé, sans l'un sans l'autre... Je suis vraiment nul :(

Re: Formulaire php

par stealth35 » 14 juin 2010, 16:04

a un moment tu dois faire
$choixMail = $_POST['choixMail'];

c'est le $_POST['choixMail'] qui n'existe pas :wink:

Re: Formulaire php

par gmarcilly » 14 juin 2010, 16:02

J'ai testé la valeur choixMail avec ceci :

if (isset($choixMail)) {
echo 'Cette variable existe, donc je peux l\'afficher.';
}

et ça me retourne le message selon lequel la valeur existe bien et qu'elle peut s'afficher :) . Mais l'erreur concernant choixMail persiste !

Que faire ?
Merci

Re: Formulaire php

par stealth35 » 14 juin 2010, 15:39

Merci beaucoup de ton aide ! En effet, c'était ballot :? La page s'affiche maintenant mais deux nouvelles erreurs sont apparues :

Notice: Undefined index: choixMail in C:\wamp\www\Contacts.php on line 472 (et 474)

Je crois que j'ai provoqué cette erreur en voulant réunir les deux code existants. Qu'en penses-tu ?

Comment puis-je définir choixMail ? Ou peut-être qu'il y a conflit entre deux termes ?

Merci de m'accorder du temps :)
faut tester si les valeur existe avec un isset

Re: Formulaire php

par gmarcilly » 14 juin 2010, 15:37

Merci beaucoup de ton aide ! En effet, c'était ballot :? La page s'affiche maintenant mais deux nouvelles erreurs sont apparues :

Notice: Undefined index: choixMail in C:\wamp\www\Contacts.php on line 472 (et 474)

Je crois que j'ai provoqué cette erreur en voulant réunir les deux code existants. Qu'en penses-tu ?

Comment puis-je définir choixMail ? Ou peut-être qu'il y a conflit entre deux termes ?

Merci de m'accorder du temps :)

Re: Formulaire php

par stealth35 » 14 juin 2010, 14:46

regarde ligne 147, ta mis des virgules a l place des mettre des points
ligne 133 ton if n'est pas fermer

Re: Formulaire php

par gmarcilly » 14 juin 2010, 14:38

La coloration syntaxique ne met plus en évidence d'erreurs à cet endroit mais j'ai toujours une erreur :

Voici de nouveau le code (avec les lignes corrigés :) ):

Code : Tout sélectionner

<?php /* ******************************************************************************************** CONFIGURATION ******************************************************************************************** */ // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule // copie ? (envoie une copie au visiteur) $copie = 'oui'; // Action du formulaire (si votre page a des paramètres dans l'URL) // si cette page est index.php?page=contact alors mettez index.php?page=contact // sinon, laissez vide $form_action = ''; // Messages de confirmation du mail $message_envoye = "Merci ! Votre message nous est bien parvenu !<br /> Nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais."; $message_non_envoye = "L'envoi du mail a échoué. <br />Vous n'avez peut-être pas rempli tous les champs du formulaire. <br />Merci de réessayer en cliquant <a href=\"http://www.marci.fr/contact.php\">ici</a>."; // Message d'erreur du formulaire $message_formulaire_invalide = "L'envoi du message a échoué. V&eacute;rifiez que tous les champs <br />soient bien remplis et que l'email soit sans erreur.<br /><br />"; /* ******************************************************************************************** FIN DE LA CONFIGURATION ******************************************************************************************** */ // On vérifit que la personne a bien choisi le destinataire if($_POST['choixMail'] === 'Tout le monde'){ $to = implode(', ', $listeDesMails); }elseif($_POST['choixMail'] && IsSet($listeDesMails[$_POST['choixMail']])){ $to = $listeDesMails[$_POST['choixMail']]; }else{ echo '<div style="text-align:center; color:#FF0000;">Veuillez choisir un destinataire ! Merci.<br /><br /></div>',"\r\n"; } /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text if (1 === get_magic_quotes_gpc()) { $stripslashes = create_function('$txt', 'return stripslashes($txt);'); } else { $stripslashes = create_function('$txt', 'return $txt;'); } // magic quotes ? $text = $stripslashes($text); $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$"; return (eregi($pattern,$email)) ? true : false; }; $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin // si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; if (isset($_POST['envoi'])) { // On va vérifier les variables et l'email ... $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré $err_formulaire = (IsEmail($email)) ? false : true; // les 4 variables sont remplies, if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // On génère donc puis envoie le mail $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; // envoyer une copie au visiteur ? if ($copie == 'oui') { $cible = $destinataire.','.$email; } else { $cible = $destinataire; }; // Remplacement de certains caractères spéciaux $message = html_entity_decode($message); $message = str_replace('’',"'",$message); $message = str_replace('<br>','',$message); $message = str_replace('','',$message); // Envoi du mail if (mail($cible, $objet, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.' '."\n"; $err_formulaire = true; }; }; // fin du if (!isset($_POST['envoi'])) if (($err_formulaire) || (!isset($_POST['envoi']))) { // afficher le formulaire ?> <form id="contact" method="post" action="<?php echo($_SERVER['PHP_SELF']);?>"> <fieldset> <label for="choixMail">Destinataire <span class="rouge">*</span> :</label> <select id="choixMail" name="choixMail"> <option value="0" selected="selected">Choisissez un destinataire...</option> <option value="Tout le monde">Tout le monde</option> <?php foreach($listeDesMails as $prenom => $adresseMail){ echo '<option value="',$prenom,'">',$prenom,'</option>',"\r\n"; } ?> </select> <p>&nbsp;&nbsp;<label for="nom">Votre nom <span class="rouge">*</span> : </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="nom" name="nom" tabindex="1" value="<?php echo(htmlentities(stripslashes($_POST[nom]))); ?>"/></p><br /> <p>&nbsp;&nbsp;<label for="email">Votre mail <span class="rouge">*</span> : </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="email" name="email" tabindex="2" value="<?php echo(htmlentities(stripslashes($_POST[email]))); ?>" /></p><br /> </fieldset> <fieldset> <br /> <p>&nbsp;&nbsp;<label for="objet">Objet du message <span class="rouge">*</span> : </label> &nbsp;&nbsp;<input type="text" id="objet" name="objet" tabindex="3" size="40" value="<?php echo(htmlentities(stripslashes($_POST[objet]))); ?>"/></p><br /> <p>&nbsp;&nbsp;<label for="message">Message <span class="rouge">*</span> : </label> &nbsp;&nbsp; <textarea id="message" name="message" tabindex="4" cols="70" rows="8"><?php echo(htmlentities(stripslashes($_POST[message]))); ?></textarea> </p><br /> <p class="contenu">Merci de vérifier que vous avez rempli tous les champs <br />du formulaire.</p> <br /><br /><br /> </fieldset> <br /><br /> <div style="text-align:center;"><input type="submit" name="envoi" value="Valider" /></div> </form>

Merci :)

Re: Formulaire php

par stealth35 » 14 juin 2010, 13:46

J'utilise notepad++
avec la coloration syntaxique tu dois bien voir que y'a un soucis quelque part :wink:

remontre tout ton code (avec les baliste PHP sur le forum)

Re: Formulaire php

par gmarcilly » 14 juin 2010, 13:33

J'utilise notepad++

Re: Formulaire php

par stealth35 » 14 juin 2010, 13:15

Bonjour,

Merci Stealth pour ton aide. Désolé pour l'attente. Je ne pouvais pas te répondre plus tôt.

J'ai supprimé la ligne dont tu m'as parlé. Il y a toujours la même erreur. J'ai supprimé tout le paragraphe: pareil.

Peux-tu me dire quelle est exactement l'erreur car je ne suis pas très bon en php ?

Si quelqu'un a une autre idée ?

Merci d'avance

utilises quelle éditeur ?