PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

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 : PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par @rthur » 07 nov. 2018, 10:32

Si tu n'a pas besoin de code HTML particulièrement dans ton mail, contente toi de faire du texte simple, ça évite + facilement les antispam (et vu que c'est un mail interne si je comprends bien, le texte simple me semble plus logique).

Reprends les exemples 2 ou 5 de la doc pour vérifier que tu fais tout correctement, c'est le plus sûr : https://php.net/mail

Et attention, à ne pas confondre \n et /n car dans tes messages précédents parfois tu intervertis les 2

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 06 nov. 2018, 23:15

humhum. SI avoir supprimé mes /n, permet à FF et Edge d'envoyer les mails (c'est tout ce que je demandais), le problème c'est que ça m'envoie tout ça :
<!DOCTYPE html><html><head><meta charset="UTF-8">
                         <title>Mail depuis monsite</title></head>                      
                         <body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;">                                                  
                          <div style="padding:24px; font-size:17px;">
                           DE :  '.$nom.', <br /> SOCIETE : '.$societe.', <br /> TELEPHONE : '.$tel_clean.', EMAIL : '.$lettre_electro.' <br /><br /> MESSAGE : '.$mensaje.' "; </div> </body></html>';
au lieu de juste de :
DE: $nom,
SOCIETE: $societe
etc...

Dommage ! Je suis déjà contente mais... quelle serait la meilleure alternative ? Merci !!!!!!!!!!!

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 06 nov. 2018, 22:42

Je n'arrive pas à passer le sujet en résolu.... Désolée, si un admin peut le faire à ma place ? ;) Merci, tschuss !

******RESOLU]******* PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 06 nov. 2018, 22:38

Le problème venait effectivement des headers auxquels j'ai tout simplement supprimé : le /n.
 $headers = "From: $from \n";
 $headers .= "MIME-Version: 1.0\n";
 $headers .= "Content-type: text/html; charset=iso-8859-1\n";			   

Merci benv8nam pour les pistes de recherche, tu m'as bien aidée puisque ça faisait 1 an ou plus que je ne touchais plus au PHP. Merci ;)

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 06 nov. 2018, 22:34

LOL ---------------- RESOLU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 06 nov. 2018, 22:29

Bonsoir brnv8nam,

Merci pour ta réponse. Ca faisait des mois que je n'avais plus mis le nez dans le PHP....(je comprends pourquoi ! :mrgreen: )....... donc merci pour les pistes. Ceci-dit, pas d'avancement.............. :x

La condition n'est pas résolue... Oui mais pourquoi ? Toutes mes vars sont ok, toutes toutes toutes ! J'ai exploré toutes les pistes que tu m'as donné, et tout renvoie les contents attendus, sauf que le send mail bloque du côté de Firefox et Edge, et je n'ai aucun code d'erreur à soumettre...

Je te confirme que utf8_decode($message) est ok, et si je le commente //, ça continue de fonctionner avec Chrome, mais toujours pas sur FF.

Quoique côté $headers, j'y connais rien...
$headers = "From: $from \n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";

Le problème vient peut-être de là.. Que devrais-je modifier ? J'ai lu r/n/ mais ça ne change rien...


Je continue de chercher, mais sI t'as d'autres pistes, je prends. Merci beaucoup.... :) Bonne soirée

Re: PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par benv8nam » 06 nov. 2018, 17:42

Le message d'erreur provient du fait que la condition suivante n'est pas résolue :

mail($to, $subject, utf8_decode($message), $headers)

Est-ce que tu peux nous mettre les messages dans les logs que tu as lors de l'erreur ?
As-tu affiché la valeur des différentes variables :
- $to
- $subject
- $message
- $header

Est-ce que ton fichier est bien encodé ? Vérifie également la sortie de utf8_decode($message).

PHP Mail - Form de contact fonctionne sur Chrome mais pas sur Firefox et Edge

par Contemp » 04 nov. 2018, 19:50

Bonsoir,

Comme indiqué dans le titre, mon form de contact fonctionne sur Chrome, mais pas sur Firefox ni Edge et je ne trouve pas ce qui cloche.
Sur Chrome, si j'envoie un message, je le reçois, mais sur Firefox ou Edge, ça m'indique "Une erreur s'est produite. Votre email n'a pas été envoyé."
Est-ce que vous voyez d'où provient mon erreur ?

Merci.
ini_set('error_reporting', E_ALL);<br>ini_set('SMTP','smtp.sfr.fr');
 ini_set("sendmail_from","[email protected]");
 
    if (!empty($_POST))
    {
         
         
      $valid = true;
      $tousleschamps = 'Veuillez remplir tous les champs';
                         
    if (!empty($_POST['societe'])) {$societe = $_POST['societe'];}
    else { $valid= false; $erreursociete = 'Société ?';}   
 
    if (!empty($_POST['nom']))  {$nom = $_POST['nom'];}  
        else{ $valid= false; $erreurnom = 'Vos nom et prénom ?';}  
         
    if (!empty($_POST['tel']))  {$tel = $_POST['tel'];}
        else { $valid= false; $erreurtel = 'Téléphone ?';}
                       
    if (!preg_match(" '[0-9 -]{10,16}' ", $tel))  { $valid= false; $erreurtel = 'Numéro incorrect';}
    if (preg_match(" '[a-zA-Z]' ", $tel))  { $valid= false; $erreurtel = 'Numéro incorrect';}
    // if (!preg_match(" '^(?:09|\+?63)(?:\d(?:-)?){9,10}$'", $tel))  { $valid= false; $erreurtel = 'Numéro incorrect';}   
         
     
    if (!empty($_POST['lettre_electro']))  {$lettre_electro = $_POST['lettre_electro'];}
    else   { $valid= false; $erreurmail = 'Votre e-mail ?';}
         
         
    if (!empty($_POST['lettre_electro']) && !preg_match("#^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$#", $_POST['lettre_electro'])) {$valid=false; $erreuremail = 'Erreur de frappe ?';}
 
    if (!empty($_POST['mensaje'])) {$mensaje = $_POST['mensaje'];}
    else { $valid= false; $erreurmessage = 'Dites-moi ?';}
         
    if (!empty($mensaje) && strlen($mensaje)<10) {$valid= false; $erreurmensaje = 'Pas de message ?' ;}
    if(!empty($_POST['esco_ndido']))
       {$valid =false; $error_esc ='Erreur. Si le problème persiste, veuillez nous contacter par téléphone et nous transmettre le code "error_esc" <br />Veuillez nous excuser de la gêne occasionnée '; } 
                     
    if ($valid)
       {     $tel_clean = str_replace( array( '\'', '"', ',' , ';', '<', '>' ), ' ', $tel);
            
             $to= "[email protected]";
   
             $from = "$nom <$lettre_electro>";
             $subject = "Mail depuis ....";
              
             $message = '<!DOCTYPE html><html><head><meta charset="UTF-8">
                         <title>Mail depuis monsite</title></head>                      
                         <body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;">                       
                                                    
                          <div style="padding:24px; font-size:17px;">
                           DE :  '.$nom.', <br /> SOCIETE : '.$societe.', <br /> TELEPHONE : '.$tel_clean.', EMAIL : '.$lettre_electro.' <br /><br /> MESSAGE : '.$mensaje.' ";
                          </div> </body></html>';
                           
               $subject = utf8_decode($subject);
               $subject.=mb_encode_mimeheader($subject,"UTF-8");      
               $message.= "Content-Transfer-Encoding: 8bit\n";   
                           
               $headers = "From: $from \n";
               $headers .= "MIME-Version: 1.0\n";
               $headers .= "Content-type: text/html; charset=iso-8859-1\n";
                
              
       
          if (mail($to, $subject, utf8_decode($message), $headers) )
             {$erreur = 'Merci, votre message a bien été envoyé.<br />Je vous recontacterai dans les prochaines heures.';
              unset ($nom);
              unset ($societe);
              unset ($tel);
              unset ($lettre_electro);
             
              unset ($mensaje);
              unset ($message);
             }
             else {$erreur= ' Une erreur s\'est produite. Votre email n\'a pas été envoyé. <br /> Veuillez me contacter par téléphone ou à l\'adresse indiquée. Merci.';}
           } 
     
}
 
?>
<!DOCTYPE html>
<html lang="FR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<META NAME="Robots" CONTENT="none" /> 
<title>Contact </title>
 
 
<link rel="icon" type="image/png" href="core/img/favicon_Marina.png" />
<link rel="stylesheet" href="core/bootstrap.min.css"  /> 
<link rel="stylesheet" href="core/newboot_min.css?=<?php echo time(); ?>"  />
<link rel="stylesheet" href="core/js/Hover-master/css/hover.css" media="all">
<link rel="stylesheet" href="core/contact.css?=<?php echo time(); ?>"  />
<script type="text/javascript" src="core/js/jquery-3.3.1.min.js" ></script>
<script type="text/javascript" src="core/_bootstrap-3.3.7-dist/bootstrap-3.3.7-dist/js/bootstrap.min.js" > </script>
<link rel="stylesheet" href="core/accueil.css" />
<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body >
 <?php include('includes/menu_contact_active.php'); ?>
    

<div class="container-fluid" >
   
   
 <section id="contact" class="animatedParent container" >
    <div id="contact_container" class='animated swing'>
 
    <div class="titres_white"> <h1> <b>CONTACT</b><br /> </h1> </div>
 
 
<div class="form_contact" >
        <form method="post" id="form_contact" action="#">
         
 
         
        <label for="societe" id="empresa" class="etiquette"> Société:</label>
        <input type="text" id="societe" class="champ" name="societe" size="35" maxlength="100" tabindex="10" value="<?php if (isset($societe)) echo $societe; ?>" />
        <span class="error_message"> <?php if(isset($erreursociete)) echo $erreursociete; ?> </span>
        <br />  
         
        <label for="nom" id="apellidos" class="etiquette"> Contact:</label>
        <input type="text" id="nom" class="champ" name="nom" size="35" maxlength="100"  tabindex="20" value="<?php if(isset ($nom)) echo $nom; ?>" />
        <span class="error_message"> <?php if(isset($erreurnom)) echo $erreurnom; ?> </span>
        <br />
         
         
        <label for="tel" id="telf" class="etiquette"> Téléphone:</label>
        <input type="text" id="tel" class="champ" name="tel" size="35" maxlength="100" placeholder="" tabindex="40" value="<?php if (isset($tel)) echo $tel; ?>" />
        <span class="error_message"> <?php if(isset($erreurtel)) echo $erreurtel; ?> </span>
        <br />
         
        <label for="email" id="mail" class="etiquette"> E-mail:</label>
        <input type="text" id="email" class="champ"  name="lettre_electro" size="35" maxlength="100"  tabindex="50" value="<?php if(isset($lettre_electro)) echo $lettre_electro; ?>" />
        <span class="error_message"> <?php if(isset($erreurmail)) echo $erreurmail; if(isset($erreuremail)) echo $erreuremail; ?> </span>
        <br /> <br />
         
        <input type="hidden" name="esco_ndido" value="" />
      
         
        <label for="mensaje" id="mess" class="etiquette"> Message: </label>
        <textarea id="mensaje" class="champ" name="mensaje" cols="50" rows="11" maxlength="2500" tabindex="68" > <?php if(isset($mensaje)) echo $mensaje; ?> </textarea>
        <span class="error_message">  <?php if(isset($erreurmessage)) echo $erreurmessage; ?> </span>
        <span class="error_message">  <?php if (isset($erreurmensaje)) echo $erreurmensaje; ?> </span>
        <br />
        <br />
        <br />
        <br />
 
        <input type="submit" value="Envoyer" class="myBTN" id="submit" name="submit" tabindex="100" />
        <div id="envoi_result"> <span class="erreur"> <br /> <br /> <?php if(isset($erreur)) {echo  $erreur ;} ?> </span>  </div>
        </form>
 
</div> <!-- END form_contact -->
</div> <!-- END contact_container -->
</section>
</div> <!-- END container-fluid -->