Formulaire contact php défectueux

Résolu/Fermé
valérie_o.O Messages postés 33 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 27 août 2010 - 5 août 2010 à 04:59
Yohan_ Messages postés 232 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 12 août 2010 - 5 août 2010 à 16:37
Bonjour,

Je suis présentement en train de (d'essayer :P) de bâtir un formulaire de contact pour mon site, qui enverrai les réponses du formulaire à mon adresse e-mail (pas de base de données donc). Quelque chose de bien classique, dont on a des milliers d'exemples sur le net, me direz-vous.

Donc je bâtis mon .php à l'aide d'exemples que je trouve, des trucs très logique et tout, et il se trouve que les parties les plus simples sont celles qui ne fonctionnent pas x_x

Voici le code php:
<?php
/* Email du destinataire (je l'ai changé exprès pour pas mettre la mienne ici quand même ;)*/
$destinataire = "monadresse@monserveur.com";

/* Récupération */
$nom = $_POST['nom'];
$email = $_POST['email'];
$sujet = $_POST['sujet'];
$sujet = "Contact Form $sujet";
$message = $_POST['message'];
$message = "$nom <$email> \r \r $message";
$headers= "From: ".$_POST['email'];


/* Vérification */
if ( $message == "" ) {
  echo "Veuillez indiquer un message.";
  $erreur = true;
}
if($sujet=="default"){
echo "Veuillez choisir un sujet.";
$erreur = true;
}
/* Vérification du mail */
if($email =="" OR !preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) {
  echo "Veuillez indiquer un email valide.";
  $erreur = true;
}
/* Envoi du mail */
if ( !$erreur ) {
  mail( $destinataire , $sujet , $message , $headers);
  echo "Le message a été envoyé.";
}
?>


Et bien comme c'est là, je peux envoyer un formulaire totalement vide sauf l'adresse email. Il semblerait que seule la ligne testant l'adresse email fonctionne, le reste passe comme dans du beurre :( Le if($sujet=="default"), c'est parce que c'est une liste déroulante dont la première valeur est default, j'ai fait exprès parce que je veux que les gens choisissent vraiment une des options... Donc voilà je suis débrouillarde autant que faire se peut, mais débutante aussi, et je ne vois pas ce qui ne pourrait pas marcher dans une ligne aussi simple que if ( $message == "" ) x_x

Merci de bien vouloir m'aider!

2 réponses

Yohan_ Messages postés 232 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 12 août 2010 83
5 août 2010 à 09:32
Salut,

Bon déja à priori, $message pourra jamais être == à "" puisque tu lui rentres :

$message = "$nom <$email> \r \r $message"


Ce qui, même si tes $nom, $mail et $message sont nuls, donnera au minimum "< >" ce qui n'est bien évidemment pas = à "".

Après, concernant la partie du choix du sujet et compagnie, faudrait voir le formulaire lié ^^
5
valérie_o.O Messages postés 33 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 27 août 2010 1
Modifié par valérie_o.O le 5/08/2010 à 15:55
mouais... très logique XD c'était pour faire une sorte de mise en page du message mais j'avoue que ça ne marche pas alors.. Je vais vérifier mes autres parties et si ça ne fonctionne toujours pas je renvoie qqchose! merci beaucoup!

edit: Sur le même principe je viens de voir que j'avais mis mon sujet "Contact Form" par défaut dans la variable sujet... donc si je ne veux pas que mon sujet soir celui par defaut je devrai écrire
if($sujet=="Contact Form default"){

Je vérifie pour le reste et je reviens mettre résolu si tout fonctionne! :) merci!
0
Yohan_ Messages postés 232 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 12 août 2010 83
Modifié par Yohan_ le 5/08/2010 à 16:37
De rien, content que ça ait résolu ton problème ;)
0
valérie_o.O Messages postés 33 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 27 août 2010 1
5 août 2010 à 16:28
<?php
/* Email du destinataire*/
$destinataire = "blabla@bleble.com";

/* Récupération */
$nom = $_POST['nom'];
$email = $_POST['email'];
$sujet = $_POST['sujet'];
$sujet = "Contact Form $sujet";
$message = $_POST['message'];
$message = "$nom <$email> \r \r $message";
$headers= "From: ".$_POST['email'];


/* Vérification */
if ( $_POST['message'] == "" ) {
  echo "Veuillez indiquer un message.";
  $erreur = true;
}
if ( $_POST['nom'] == "" ) {
  echo "Veuillez indiquer votre nom.";
  $erreur = true;
}
if($_POST['sujet']=="default"){
echo "Veuillez choisir un sujet.";
$erreur = true;
}
/* Vérification du mail */
if($email =="" OR !preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) {
  echo "Veuillez indiquer un email valide.";
  $erreur = true;
}
/* Envoi du mail */
if ( !$erreur ) {
  mail( $destinataire , $sujet , $message , $headers);
  echo "Le message a été envoyé.";
}
?>


Voici ce que ça donne si ça peut servir à d'autre! j'ai mis mes "if" directement sur les données du formulaire, comme ça ça me permet de garder ma "mise en page" de mon message comme je voulais! Merci!
1