Formulaire De Contact

Chiiip`
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 21:35

Bonsoir à tous,
Je viens solliciter votre aide car j'ai un petit souci :)
Alors voilà, Quand j'essaie mon site en local (avec wampserver), et que je teste mon formulaire, il me dit qu'il y a une erreur ligne 13, or je ne vois pas de fautes particulières :( .
Voila mon Code php :
<?php

if(isset($_POST) && isset($_POST['Email']) && isset($_POST['Message'])){
extract($_POST);
if(!empty($nom) && !empty($email) && !empty($message)){
$destinataire="contact@**********.com";
$sujet="Camping ! ";
$msg="Nouveau mail du site \n
Email : $Email \n
Message : $Message";
$entete="From : $Email \n Reply-to : $Email";
mail($destinataire,$sujet,$msg,$entete)
}
else{
echo "Vous n'avez pas rempli tous les champs";
}
}
?>

Mammouth du PHP | 985 Messages

03 avr. 2010, 22:32

Bonjour,

$_POST est toujours défini, car c'est une Super Gloglale, donc un isset($POST) retournera toujours true.
Par contre un !empty($_POST) -> non.
Donc:
if(!empty($_POST) && isset($_POST['Email']) && isset($_POST['Message'])){
Ensuite, il est plutôt déconseillé d'utiliser extract() avec les variables $_POST.
Surtout que tu fais des isset() et empty(), donc ici en plus c'est inutile.
Donc:
<?php
// Si $_POST n'est pas vide et que les champs du formulaire Email et Message sont envoyés
if (!empty($_POST) && isset($_POST['Email']) && isset($_POST['Message'])) {

   // Si les champs Nom, Email et Message ne sont pas vides
   if (!empty($_POST['Nom']) && !empty($_POST['Email']) && !empty($_POST['Message'])) {

      // L'email Destinataire
      $destinataire = 'contact@**********.com';

     // Le sujet
      $sujet = 'Camping ! ';

     // Le message
      $msg = 'Nouveau mail du site' . "\n";
      $msg .= 'Email : ' . $_POST['Email'] . "\n";
      $msg .= 'Message : ' . $_POST['Message'];

     // L'entête
      $entete = 'From: ' . $_POST['Email'] . "\n";
      $entete .= 'Reply-To: ' . $_POST['Email'];

     // envoie de l'email
     mail($destinataire, $sujet, $msg, $entete);
   } else {
     echo "Vous n'avez pas rempli tous les champs";
   }
}
En complément il faut protéger les variables qui sont postées par le formulaire de possibles injections:
http://www.phpsecure.info/v2/article/Ma ... Inject.php

Et regarde aussi les exemples du manuel ainsi que les commentaires :)
http://fr.php.net/manual/fr/function.mail.php

PS:
Attention, il y a une majuscule dans chaque nom de champ du formulaire du script php ici:
$_POST['Email'], $_POST['Message'] et $_POST['Nom']
Donc il faut que les champs du formulaire html utilisent la même casse :)
Modifié en dernier par Dr@ke le 03 avr. 2010, 23:07, modifié 8 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 3 Messages

03 avr. 2010, 22:48

Euh ...
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\Site Camping\Contact.php on line 15

:)

Petit nouveau ! | 3 Messages

03 avr. 2010, 22:57

<form method="post" action="Contact.php">
    <p align="center">Email :
      <input type="text" /><br />
      Message :
      <textarea name="Message" cols="30" rows="15"></textarea><br />
      <input type="submit" value="Envoyer" />
  </form>
Voila mon code Html mais je ne vois toujours rien qui cloche

Mammouth du PHP | 985 Messages

03 avr. 2010, 23:08

Euh ...
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\Site Camping\Contact.php on line 15
Normal, j'éditais car j'essayais de faire tout joli et tout :wink:
je ne vois toujours rien qui cloche
Si je t'ai expliqué quoi.

[EDIT]
Ton formulaire n'est pas complet.
Il manque des champs surtout que tu vérifies dans ton script si ils sont présents.
Regarde ici:
http://www.phpdebutant.org/article56.php

Et regarde ce que j'ai écris dans mon premier post, c'est utile je pense :wink:
Modifié en dernier par Dr@ke le 03 avr. 2010, 23:29, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 3 Messages

03 avr. 2010, 23:13

:oops:
J'ai pas tout compris là ...

Mammouth du PHP | 985 Messages

03 avr. 2010, 23:16

Sinon ton erreur ligne 13 c'était car tu avais oublié un ; après la fonction mail():
// manque un ;
mail($destinataire, $sujet, $msg, $entete)

// remplacer par:
mail($destinataire, $sujet, $msg, $entete);
Désolé j''avais oublié de l'expliquer.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.