Pb formulaire de contact

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. 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.
    1. 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.
    2. Moi ca ne marche toujours pas. Je crois que c'est mon hebergeur.
    3. Quel est le message d'erreur que tu reçois?
    4. 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.
    5. Dans ce cas, le tout s'est bien déroulé. As-tu bien mis ton adresse courriel sur cette ligne:
      $adresse = "***@***";
  2. 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"; }
    1. 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" ); }
    2. je teste et je te tien au courant
    3. ça me fait no good et toujours pas de mail. C'est mon hebergeur c'est sur. je vois pas d'autre explication.
  3. 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.
    1. Ouai je vais essayais de les contacter.

      merci pour ton aide.