По некоторым причинам переменные $ name, $ email и $ message не передаются в переменные $ msgcontents и $ headers. После того, как я заполнил форму и нажмите отправить сообщение в моем почтовом ящике, это выглядит так:
Тема: Сообщение от контактной формы
От: Неизвестный отправитель
Дата: пн, 17 ноября 2014 г. 19:44
Кому: [email protected]
Имя:
Эл. адрес:
Сообщение:
Я использовал var_dump(), чтобы узнать, заполняются ли мои переменные после нажатия кнопки submit, но они по какой-то причине не подхватываются $ msgcontents и $ headers. Где я иду не так?
Вот мой код:
<?php
$name = trim(htmlspecialchars($_POST['name'], ENT_QUOTES));
$email = trim($_POST['email']);
$message = trim(htmlspecialchars($_POST['message'], ENT_QUOTES));
$to = "[email protected]";
$subject = "Message From Contact Form";
$msgcontents = "Name: $name <br> Email: $email <br> Message: $message";
$headers = array("MIME-VERSION: 1.0",
"Content-type: text/html; charset=iso-8859-1",
"From: $name <$email>",
"Reply-To: [email protected]",
"X-Mailer: PHP/" . PHP_VERSION
);
$headers = implode("\r\n", $headers);
$mailsent = mail($to, $subject, $msgcontents, $headers);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form id="contactform" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" novalidate>
<input type="text" name="name" placeholder="Your Name">
<input type="email" name="email" placeholder="Your Email">
<textarea name="message" placeholder="Your Message"></textarea>
<input type="submit" name="submitform" value="send">
</form>
<?php
var_dump($to);
?>
<br>
<?php
var_dump($subject);
?>
<br>
<?php
var_dump($msgcontents);
?>
<br>
<?php
var_dump($headers);
?>
<br>
<?php
var_dump($name);
?>
<br>
<?php
var_dump($email);
?>
<br>
<?php
var_dump($message);
?>
</body>
</html>
Я думаю, вы проверяете сообщение, отправленное с первой загрузки страницы (без формы)
Попробуйте обернуть код отправки электронной почты, например:
if (isset($_POST['submitform'])) {
//...
mail(...);
//...
}
Затем, когда загрузка страницы не была отправлена, но когда вы нажимаете кнопку отправки, почта отправляется