Incompréhension code formulaire de contact

Fermé
gintoxic - 16 févr. 2014 à 15:08
 gintoxic - 18 févr. 2014 à 17:27
bonjour, je tente d'écrire un code pour un formulaire de contact, et je croise quelques incompréhensions dans mon code qui heurtent ma logique...

l'execution du code ne fait que me dire la valeur des variable $cause_message_failed et $false_mail
que vous retrouvez dans mon code suivant

or je crois avoir dis au code que si rien est entré il détecte une erreur mais que si c'est rempli et que l'adresse mail est correct alors il affiche la valeur de la variable $message_ok (en attendant d'aller plus loin dans mon code je teste au fur et à mesure)

pourriez vous m'expliquer ce qui cloche (merci de ne pas me révéler tout un code, je souhaite apprendre

merci à vous pour votre aide


<?php
$adress_sender = '***@***';
$message_ok = utf8_decode('Votre message a été envoyé.');
$message_failed = utf8_decode('Votre message n\'a pas été envoyé.');
$cause_message_failed = utf8_decode('Merci de vérifier la saisie de vos données.');
$message = $_POST['message'];
$nom = $_POST['nom'];
$email = $_POST['objet'];
$envoi = $_POST['envoi'];
$info = utf8_decode('*Tous les champs doivent être renseignés.');
$false_mail = utf8_decode('Veuillez entrer une adresse mail valide');
$syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';

function Form(){
echo '<form id="contact" method="post" action="'.$page_form.'">'."\n";
echo ' <p>'."\n";
echo ' <label for="nom">Nom*</label>'."\n";
echo ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="email">Courriel*</label>'."\n";
echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="objet">Objet*</label>'."\n";
echo ' <input type="text" id="objet" name="objet" size="53" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="message">Message*</label>'."\n";
echo ' <textarea id="message" name="message" tabindex="4" cols="60" rows="8">'.stripslashes($message).'</textarea>'."\n";
echo ' </p>'."\n";

echo ' <div><input type="submit" name="envoi" id="go" value=" Soumettre " /></div>'."\n";
echo '</form>'."\n";


}

if(isset($envoi)){
if(empty($message) && empty($nom) && empty($email) && empty($objet)){
echo $cause_message_failed;
}
else{
if(preg_match($syntaxe,$email)){
echo $message_ok;
}else{
echo $false_mail.'<br />';
echo '<a href="'.$page_form.'" style="color:red">Retour au formulaire</a>';

}
}
}
else{
Form();
echo '<p style="color:red;font-size:.8em">'.$info.'</p>';
}
?>
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 18/02/2014 à 16:03
Salut,

Plusieurs erreurs dans ton code :
- ligne 7 : tu affectes dans la variable $email la valeur de $_POST['objet'] à la place de $_POST['email'] (d'où le fait que la vérification de l'adresse mail ne fonctionne pas)
- ligne 40 : la variable $objet n'existe pas.
De plus ta vérification n'est pas correcte : tu affiches le message $cause_message_failed uniquement si tous les champs sont vides alors qu'il faudrait afficher ce message si au moins un de ces champ est vide.

Bonne correction
0
quel C... je fais moi !!!
je te remercie, déjà j'avance un peu dans ma logique et l'application de celle-ci


merci beaucoup
0