Pb formulaire de contact

theca -  
 theca -
J'ai creer un formulaire de contact pour mon site et il me fait toujours erreur.
Voila j'ai une erreur et j'arrive pas a la resoudre. Je vous poste les codes du html et du php ci dessous:

PHP:

<?php

$adresse = "***@***";
$site = "www.crbc.fr";

$TO = $adresse;

$head = "From: ".$adresse."\n";
$head .= "X-Sender: <".$adresse.">\n";
$head .= "X-Mailer: PHP\n";
$head .= "Return-Path: <".$adresse.">\n";
$head .= "Content-Type: text/plain; charset=iso-8859-1\n";
$sujet = "Formulaire de contact";

$informations = "
Nom: ".$_POST['nom']."\r\n
Email du formulaire: ".$_POST['mail']." \r\n
Sujet du formulaire: ".$_POST['objet']."\r\n
Message: ".$_POST['message']."\r\n
";

$res = mail($TO, $sujet ,$informations, $head);

if (true == $res) {
Header("Location: http://".$site."/page/formail2_ok.html" );
} else {
Header("Location: http://".$site."/page/formail2_pasok.html" );
}
?>

HTML :

<form method="post" action="formmail2.php" id="contact" target="_blank" >
<input type="hidden" name="subject" value="formmail">
<input class="whform " type="text" name="nom" id="nom" placeholder="Nom Prénom" required />
<input class="whform " type="email" name="mail" id="mail" placeholder="E-mail" required />
<input class="whform " type="text" name="objet" id="sujet" placeholder="Sujet"required />
<textarea name="message" id="message" placeholder="Taper votre message" required /></textarea>
<input type="submit" id="envoyer" value="Envoyer" />
</form>

Si quelqu'un sait ce qui cloche merci d'avance pour son aide.

3 réponses

  1. GrifOli Messages postés 2223 Statut Membre 597
     
    Bonjour,

    Tout d'abord, pour le warning occasionné, prends cette ligne de code:
    $head .= "Content-Type: text/plain; charset=iso-8859-1\n"; 
    et mets-la avant les autres variables $head.

    Ensuite, je ne comprends pas trop ce que tu désires faire avec ces lignes de code:
    $res = mail($TO, $sujet ,$informations, $head); 
    if (true == $res) {
    Header("Location: http://".$site."/page/formail2_ok.html" );
    } else {
    Header("Location: http://".$site."/page/formail2_pasok.html" );
    }

    Si c'est pour savoir si le courriel s'est bien envoyé, je ne crois pas que ce soit la bonne façon de faire.
    Tout d'abord, je remplacerais ces lignes par seulement cela:
    mail($TO, $sujet ,$informations, $head); 

    Puis, je vérifierais les input du formulaire AVANT l'envoi du courriel. Ainsi, s'il y a bien présence de tous les éléments requis, la fonction mail() pourra se faire.

    Mais avec les seuls changements que je t'ai proposés, tout fonctionne parfaitement. Je l'ai testé sur un serveur et j'ai bien reçu un courriel.
    0
    1. theca
       
      ok merci je vais faire les changement que tu m'as dit sinon je pense que ca vient de l'herbergeur qui est LWS.

      Pour la partie que tu ne comprend c pour prevenir l'utilisateur si son mail a bien étéi envoyé ou pas.

      merci pour ton aide je te tien au courant.
      0
    2. theca
       
      Moi ca ne marche toujours pas. Je crois que c'est mon hebergeur.
      0
    3. GrifOli Messages postés 2223 Statut Membre 597
       
      Quel est le message d'erreur que tu reçois?
      0
    4. theca
       
      je sais pas je reçois pas de message d'erreur j'ai une page blanche. c tout. Et la page blache c'est l'url de mon php.
      0
    5. GrifOli Messages postés 2223 Statut Membre 597
       
      Dans ce cas, le tout s'est bien déroulé. As-tu bien mis ton adresse courriel sur cette ligne:
      $adresse = "***@***";
      0
  2. GrifOli Messages postés 2223 Statut Membre 597
     
    J'ai utilisé ce code sur mon serveur aussi, j'arrivais sur ta page erreur, mais je recevais quand même le courriel.

    Fais cela à la place. Je l'ai testé et ça marche.

    $res = mail($TO, $sujet ,$informations, $head);

    if ((isset($res)) && ($res === TRUE)){ echo "good"; }
    else { echo "no good"; }
    0
    1. GrifOli Messages postés 2223 Statut Membre 597
       
      En passant, tu peux remettre tes header(location: .... ) à la place de mes echo "good" ou "no good" là, c'était juste pour faire vite.

      Tu verrais donc:

      $res = mail($TO, $sujet ,$informations, $head);

      if ((isset($res)) && ($res === TRUE)){ Header("Location: http://".$site."/page/formail2_ok.html" ); }
      else { Header("Location: http://".$site."/page/formail2_pasok.html" ); }
      0
    2. theca
       
      je teste et je te tien au courant
      0
    3. theca
       
      ça me fait no good et toujours pas de mail. C'est mon hebergeur c'est sur. je vois pas d'autre explication.
      0
  3. GrifOli Messages postés 2223 Statut Membre 597
     
    Si tu tombes encore sur ta page d'erreur, alors, c'est peut-être parce que ton hébergeur bloque la fonction mail(). Dans ce cas, il faudrait que tu communiques avec le support technique pour voir s'il n'y a pas une alternative.
    0
    1. theca
       
      Ouai je vais essayais de les contacter.

      merci pour ton aide.
      0