Pb formulaire de contact
theca
-
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.
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
-
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. -
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"; }-
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" ); } -
-
-
-
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.