Попытка создать контактную форму

0

Цель этого кода состоит в том, чтобы кто-то заполнил его, затем он отправил свое напечатанное сообщение на мой адрес электронной почты. Я искал онлайн-ссылки для некоторых ссылок и был настолько новым для php. У меня много проблем с пониманием того, почему, когда я нажимаю кнопку отправки, он показывает мой код php-страниц. Мой вопрос: почему я не получаю письмо при нажатии кнопки отправки в форме контакта?

<form action="mail.php" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">

<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />

<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name \n Priority: $priority \n Type: $type \n Message: $message";
$recipient = "[email protected]";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Return Home</a>";
?>

Вся помощь приветствуется. Благодарю!

  • 1
    Так какой у тебя вопрос?
  • 0
    Почему код публикует мой php-код, а не отправляет мне электронное сообщение?
Показать ещё 4 комментария
Теги:
forms
email
post

2 ответа

1
Лучший ответ
  • Ваш код не проверяет наличие ошибок.
  • У вас есть php на той же странице и не упоминается, что такое имя файла формы (значит, ваше действие сомнительно).

Задайте action="" чтобы форма была отправлена на страницу. Выполните Php-код только в том случае, если форма отправлена, потому что я добавил name в вашу кнопку отправки и в Php проверил, существует ли файл submit в массиве %_POST сообщающий Php, когда нужно выполнить этот код. Поскольку вы будете на той же странице, чтобы я изменил текст тега привязки.

Примечание. Этот код предполагает, что выполняется на сервере, на котором настроен почтовый сервер, и при выполнении ошибки не возникает ошибка

<form action="" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">

<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />

<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" name="sendemail" value="Send"><input type="reset" value="Clear">
</form>

<?php
if(isset($_POST["sendemail"]))
{
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name \n Priority: $priority \n Type: $type \n Message: $message";
$recipient = "[email protected]";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Go Somewhere you are already home ;)</a>";
}
?>
  • 0
    Извините, я забыл уточнить. Мой php находится на отдельной странице php под названием mail.php
0

У вас также есть очень распространенная ошибка, с которой многие люди имеют формы "Связаться с нами".

$email = $_POST['email'];
$mailheader = "From: $email \r\n";

Это сломает SPF, а также приведет к сбою DMARC, и вы никогда не получите сообщение от некоторых людей, если ваш почтовый сервер, который вы используете, имеет DMARC включен на нем и GMAIL.

Поскольку DMARC является более поздним протоколом, многие старые куки-режущие коды для связи с нами - не учитывают это.

Вы можете узнать больше об этом здесь: "DMARC - Contact Us Form Nightmare"

Предлагаемое решение будет заключаться в следующем:

$email = "[email protected]";
$subject = "Contact Form Email: " . $_POST['email'];

Таким образом, вы избегаете описания проблемы в статье. Вы не сможете быстро нажать кнопку "Ответить", но по крайней мере вы получите электронные письма от тех клиентов, у которых есть DMARC.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню