2017-07-03 8 views
0

J'ai créé un forum Web avec le script ci-dessous. Je suis en mesure de recevoir des demandes de renseignements de mon site; Cependant, l'adresse électronique du visiteur n'apparaît pas dans l'e-mail envoyé par le webmaster. Je voudrais avoir quelques conseils ici pour résoudre le problème.Problème d'affichage de l'adresse e-mail du forum

Voici mon script PHP:

<?php $name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$formcontent="From: $name \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
mail($recipient, $subject, $formcontent) or die("Error!"); 
echo "Thank You!"; 
?> 

Voici ce que je suis arrivé du webmaster: De: xx Message: xx

Aucune adresse email figurant dans le courriel envoyé par le webmaster.

J'ai trouvé quelques scripts similaires sur le web avec deux lignes supplémentaires:

$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 

Cela me donne en fait une sortie d'erreur.

Comment puis-je résoudre le problème?

Merci!

Répondre

0

Vous pouvez ajouter des en-têtes à la fonction de courrier.

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$formcontent="From: $name \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
$headers .= "From: <$email>" . "\r\n"; 

mail($recipient, $subject, $formcontent, $headers); 

FYI - Je santize et valider toutes les valeurs POST avant de les utiliser de cette manière

+0

Merci pour votre aide. Je reçois toujours un message d'erreur. L'enquête n'a pas été menée. – LucyH

0

Le troisième paramètre de mail() est juste le corps même du message, que vous avez enregistré comme $message. La quatrième variable est l'endroit où vous définissez les en-têtes et où vous définissez qui est le message From. Notez que vous n'avez pas réellement besoin de passer le message en tant qu'en-tête, et en tant que tel, votre variable $formcontent ne doit pas contenir votre en-tête From:. Toutefois, vous devez besoin de fournir des retours chariot sous la forme de "\r\n" après l'adresse e-mail fournie.

Le code modifié ressemblera à ceci:

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$formcontent = "From: $name" . "\r\n"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
mail($recipient, $subject, $message, $formcontent) or die("Error!"); 
echo "Thank You!"; 
?> 

Hope this helps! :)

+0

Bonjour, j'ai copié et collé votre code. Je reçois toujours un message d'erreur. L'enquête n'a pas été menée. – LucyH