Problème formulaire

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 formulaire

Re: Problème formulaire

par Spols » 09 nov. 2016, 12:59

On va tourner en rond si tu ne repars pas du code déjà modifié.

repars de ceci
<?php

   //-----------------------------------------------------
   //-----------change address to xxx@yourdomainname ----------------------
   $address= "xxx@yourdomainname";
   //-----------------------------------------------------
   //-----------------------------------------------------

   $name = $_POST["name"];
   $email = $_POST["mail"];
   $subject = $_POST["subject"];
   $message_content = $_POST["message"];
   
   $headers = "From: $name <$email>\r\n";
   $headers .= "Reply-To: $subject <$email>\r\n";
   
   $message = "Vous avez re&ccedil;u un E-mail sur le site www.fr: \r\n";
   $message .= "Name: $name \r\n";
   $message .= "Email: $email \r\n";
   $message .= "Subject: $subject \r\n";
   $message .= "Message: $message_content \r\n";
   $mail_sent = mail($address, $subject, $message, $headers);
   if($mail_sent)
   {   
      echo $name. ": Merci pour votre message.";
   }

Re: Problème formulaire

par Botrytis » 09 nov. 2016, 11:42

Dans ton cas, je modifierais juste la nouvelle ligne 17 comme ceci
$message = "Vous avez re&ccedil;u un E-mail sur le site http://www.fr: \r\n";
Merci Spols pour le conseil mais on revient au 1er message d'erreur :

Code : Tout sélectionner

<br /> <b>Notice</b>: Undefined variable: mime_boundary in <b>/public_html/c/email.php</b> on line <b>17</b><br /> <br /> <b>Notice</b>: Undefined variable: mime_boundary in <b>/public_html/c/email.php</b> on line <b>24</b><br />

Re: Problème formulaire

par Spols » 09 nov. 2016, 11:23

C'est le propre des message d'erreur du type notice, il n'empèche pas le fonctionnement du script.

tester l'éxistence d'une variable avec isset se fait avec une condition if
par exemple
if (isset($mime_boundary)) $message = "--$mime_boundary \r\n";

la variable $message ne sera créer et remplie que si $mime_boundary existe
Dans ton cas, elle n'existera jamais à moins que tu la crée (mais je vois pas trop pourquoi tu ferais cela)

Maintenant pour ta nouvelle Notice,
Le fait est que en supprimant la ligne 17, tu as aussi retiré l'endroit du code où la variable $message est créé. tu l'utilise ensuite pour la remplir avec la syntaxe .= (note la présence du point). PHP considère que lors de l'utilisation de la syntaxe .= la variable doit dèjà être défini. sinon il affiche une Notice. Mais PHP est malin, l'utilisation d'une variable non défini n'est pas vraiment un problème puisqu'il lui suffit de la créer.
C'est d'ailleurs la même chose qui se produisait dans ton premier code, $mime_boundary n'éxistait pas mais php remplissait par un texte vide qui ne génait pas l'éxécution du script.
Pour une raison de bonne pratique, et car même une Notice peut aider à débugger, il est conseillé de définir chaque variable avant de les utiliser ou lors de leur première utilisation.

Dans ton cas, je modifierais juste la nouvelle ligne 17 comme ceci
$message = "Vous avez re&ccedil;u un E-mail sur le site www.fr: \r\n";
En enlevant le point la première fois que tu utilise la variable, tu la défini et tu la rempli d'un texte.
Ne supprime pas le point des autres lignes, sinon tu écrasera la variable à chaque fois et ton texte sera tronqué.

Re: Problème formulaire

par Botrytis » 09 nov. 2016, 11:04

Merci pour vos réponses
Où as tu récupéré ce code? C'est là qu'il faut poser la question.

A priori cela devait fonctionner en retirant les lignes 17 et 24

Je pense que cette variable est utile quant on veut inclure une pièce jointe dans un mail, mais dans ce cas là, je conseille de passer par une bibliothèque dédié comme phpmailer par exemple.
C'est le formulaire d'un template html.
Lorsque je supprime les lignes 17 et 24, j'ai le message suivant

Code : Tout sélectionner

<br /> <b>Notice</b>: Undefined variable: message in <b>/public_html/c/email.php</b> on line <b>18</b><br /> JG: Merci pour votre message.
Ce message d'erreur apparait car tu utilises une variable dans ton code qui n'a pas été défini auparavant.
Il faut probablement que tu vérifies son existence avec isset() avant de l'utiliser.
Je ne l'ai pas précisé mais je connais un peu le html et css mais pas du tout php et js. Du coup, qu'entends-tu par vérifier son existence avec isset()

Enfin, je ne l'avais pas précisé mais malgré ces messages d'erreur, le formulaire fonctionne correctement, les messages sont bien transmis

Re: Problème formulaire

par @rthur » 08 nov. 2016, 13:12

Ce message d'erreur apparait car tu utilises une variable dans ton code qui n'a pas été défini auparavant.
Il faut probablement que tu vérifies son existence avec isset() avant de l'utiliser.

Re: Problème formulaire

par Spols » 08 nov. 2016, 12:11

Où as tu récupéré ce code? C'est là qu'il faut poser la question.

A priori cela devait fonctionner en retirant les lignes 17 et 24

Je pense que cette variable est utile quant on veut inclure une pièce jointe dans un mail, mais dans ce cas là, je conseille de passer par une bibliothèque dédié comme phpmailer par exemple.

Problème formulaire

par Botrytis » 08 nov. 2016, 11:51

Bonjour,
J'ai le message d'erreur suivant avec mon formulaire lors de l'envoi :

Code : Tout sélectionner

<br /> <b>Notice</b>: Undefined variable: mime_boundary in <b>/public_html/c/email.php</b> on line <b>17</b><br /> <br /> <b>Notice</b>: Undefined variable: mime_boundary in <b>/public_html/c/email.php</b> on line <b>24</b><br /> J G5: Merci pour votre message.
Voici le code de mon formulaire php :

Code : Tout sélectionner

<?php //----------------------------------------------------- //-----------change address to xxx@yourdomainname ---------------------- $address= "xxx@yourdomainname"; //----------------------------------------------------- //----------------------------------------------------- $name = $_POST["name"]; $email = $_POST["mail"]; $subject = $_POST["subject"]; $message_content = $_POST["message"]; $headers = "From: $name <$email>\r\n"; $headers .= "Reply-To: $subject <$email>\r\n"; $message = "--$mime_boundary \r\n"; $message .= "Vous avez re&ccedil;u un E-mail sur le site www.fr: \r\n"; $message .= "Name: $name \r\n"; $message .= "Email: $email \r\n"; $message .= "Subject: $subject \r\n"; $message .= "Message: $message_content \r\n"; $message .= "--$mime_boundary--\r\n"; $mail_sent = mail($address, $subject, $message, $headers); if($mail_sent) { echo $name. ": Merci pour votre message."; }
Visiblement la variable mime_boudary n'est pas définie ...

A quoi sert cette variable ? Comment la définir ?

Merci d'avance pour vos messages