Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1883 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire (de merde)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire (de merde)

n°2314758
bigsido
Porte physiquement la lumière
Posté le 01-05-2018 à 17:19:43  profilanswer
 

Salut HFR, je vous la fait courte :  [:lefab:2]  
 
J'ai sur www.sido.fr un formulaire de contact.
 
Le truc c'est que php et moi ça fait deux. Bon, je suis pas à la rue non plus, mais c'est vraiment pas mon truc.
 
Concrètement, il fonctionne.  [:djekyl:1]  
 
J'ai trois champs "Pseudo" "Email" "Message" et le problème est que quand le champ pseudo contient un espace cela ne fonctionne plus, le message part pas.
 
Et honnêtement, je ne sais pas pourquoi  :sweat:  
 
Voici mon code php :
 

Code :
  1. <?php
  2. if($_POST)
  3. {
  4.     $to_email       = "blablabla@blablabla.com"; //Recipient email, Replace with own email here
  5.     $from_email     = 'blabla@blabla.com'; //from mail, it is mandatory with some hosts and without it mail might endup in spam.
  6.    
  7.     //check if its not an ajax request just exit!
  8.     if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
  9.         print "Une erreur est survenue !";
  10.         exit;
  11.     }
  12.    
  13.     //Sanitize input data using PHP filter_var().
  14.     $sender_name    = filter_var($_POST["form_user_name"], FILTER_SANITIZE_STRING);
  15.     $sender_email   = filter_var($_POST["form_user_email"], FILTER_SANITIZE_EMAIL);
  16.     $country_code   = filter_var($_POST["form_country_code"], FILTER_SANITIZE_NUMBER_INT);
  17.     $message        = filter_var($_POST["form_message"], FILTER_SANITIZE_STRING);
  18.     $subject        = "Nouveau mail depuis Sido.fr !";
  19.    
  20.     //additional php validation
  21.     if(strlen($sender_name)<3){ // If length is less than 4 it will output JSON error.
  22.         $output = json_encode(array('type'=>'error', 'text' => 'Votre nom est trop court, ou le champ est vide !'));
  23.         die($output);
  24.     }
  25.     if(!filter_var($sender_email, FILTER_VALIDATE_EMAIL)){ //email validation
  26.         print json_encode(array('type'=>'error', 'text' => 'Hmmm, votre mail semble avoir un problème !'));
  27.         exit;
  28.     }
  29.     if(strlen($message)<3){ //check emtpy message
  30.         print json_encode(array('type'=>'error', 'text' => 'Votre message semble trop court... '));
  31.         exit;
  32.     }
  33.    
  34.  //email body
  35.     $message_body =  "Message from $sender_name\n";
  36.     $message_body .=  "------------------------------\n";
  37.     $message_body .=  "$message\n";
  38.     $message_body .=  "------------------------------\n";
  39.     $message_body .=  "$sender_name\n";
  40.     $message_body .=  "$sender_email\n";
  41.    
  42.     //proceed with PHP email.
  43.     $headers = 'From: '. $sender_name .'' . "\r\n" .
  44.     'Reply-To: '.$sender_email.'' . "\r\n" .
  45.     'X-Mailer: PHP/' . phpversion();
  46.    
  47.     $send_mail = mail($to_email, $subject, $message_body, $headers);
  48.    
  49.     if(!$send_mail){
  50.         //If mail couldn't be sent, this is probably server's fault, check your mail configuration or consult your host
  51.         print json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration or consult your web host.'));
  52.         exit;
  53.     }else{
  54.         /*$code_html = "<script>$(`#my_contact_form`).toggle();</script>"
  55.         print $code_html*/
  56.         print json_encode(array('type'=>'message', 'text' => 'Salut '. $sender_name.'!  Merci beaucoup pour ton petit mail !'));
  57.         exit;
  58.     }
  59. }
  60. ?>


Je pense qu'il me faut modifier "$sender_name    = filter_var($_POST["form_user_name"], FILTER_SANITIZE_STRING);"
 
Mais je pensait que FILTER_SANITIZE_STRING me nettoyait les champs dont les espaces...
 
Une idée les enfants ?


Message édité par bigsido le 01-05-2018 à 17:55:44

---------------
Site perso de Sido, un développeur-front gentil sur paris : www.sido.fr
mood
Publicité
Posté le 01-05-2018 à 17:19:43  profilanswer
 

n°2314760
MaybeEijOr​Not
but someone at least
Posté le 01-05-2018 à 18:09:48  profilanswer
 

Bonjour,

 

Essaye de voir ce que vaut ta variable après nettoyage.

 

Sinon je pense plus que c'est le header du mail qui n'aime pas l'espace :

Code :
  1. $headers = 'From: '. $sender_name


Je ne connais pas bien les headers de mails, mais n'est-ce pas plutôt une adresse mail qui est attendue ici ?

 

EDIT : il semblerait que si : https://tools.ietf.org/html/rfc4021#section-2.1.2


Message édité par MaybeEijOrNot le 01-05-2018 à 18:11:53

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2314785
bigsido
Porte physiquement la lumière
Posté le 02-05-2018 à 00:34:38  profilanswer
 

[:goumite:2]  
 
Bon, pour une raison que j'ignore, le $send_mail n'était pas pris en compte si le $sender_name contenait un espace....  [:henri gaud l'eau:5]  
 
Me demandez pas pourquoi, j'en sais foutre rien  [:herbert de vaucanson:1]  
 
Donc, après plein de test à la con j'ai contourné le bordel en enlevant à la barbare les espace sur $send_name  
 

Code :
  1. $sender_name_base    = filter_var($_POST["form_user_name"], FILTER_SANITIZE_STRING);
  2.     $sender_name = str_replace(' ', '', $sender_name_base);


 
Et là... bah ça marche niquel  [:iryngael:4]  
 
Php de merde  [:tante foufoune:3]


---------------
Site perso de Sido, un développeur-front gentil sur paris : www.sido.fr
n°2314843
tompouss
Petit chat
Posté le 03-05-2018 à 00:28:19  profilanswer
 

il y'a la fonction trim() pour supprimer les espaces avant et après une chaine de caractère
et si tu veux t'amuser un peu, il ya PHPMailer
https://github.com/PHPMailer/PHPMailer


Message édité par tompouss le 03-05-2018 à 00:34:29

---------------
collectionneur de pâtes thermiques

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire (de merde)

 

Sujets relatifs
Javascript et formulaire pdfContrôle formulaire : alert suivant oublis de l'utilisateur
Formulaire de contact phplien vers formulaire qui bloque que sur 4/17 pages ????
[VB /VBA /VBS] Remplir un formulaire HTML a partir d'un wordFormulaire d'envoi de fichier
Word 2016 : Formulaire, insertions automatiques, Macro... ?Comment envoyer formulaire ajax en cochant checkbox?
ACCESS 2010 – Requête de sélection à partir d’un formulaireFormulaire de merde avec Access
Plus de sujets relatifs à : Formulaire (de merde)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR