Проблема, с которой я сталкиваюсь, заключается в том, что я хочу передать данные из нескольких полей в форме в один адрес электронной почты через PHP, соответствующий код выглядит следующим образом:
$mailcheck = spamcheck($_POST['inputemail']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{
// This still needs to be debugged online as soon as possible
$from = $_POST['inputemail'];
$name = $_POST['inputname'];
$phone = $_POST['inputphone'];
$date = $_POST['inputdate'];
$time = $_POST['inputtime'];
$data = $_POST['inputprotection'];
$subject = $_POST['inputdropdown'];
$message = $_POST['inputmessage'];
$message = wordwrap($message, 70);
mail("[email protected]",$subject,$message,"From: $from\n" . "Name: $name\n" . "Phone: $phone\n" . "Date: $date\n" . "Time: $time\n" . "Keep Data? $data\n");
echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
}
}
Здесь я объявляю всю информацию, которая будет передана как заголовок для электронной почты. Текущая проверка синтаксиса PHP проходит так же, как и сообщение электронной почты, содержащее сообщение $to
, $subject
, $message
all fine, но заголовок $ проходит только через финальную часть (Keep Data? $data\n
). Когда я удаляю все остальные поля и просто сохраняю часть $ data, email перестает отправлять любой $header
. У меня также есть проблема с переадресацией, которая была удалена из приведенного ниже кода и будет вставлена, как только проблема будет устранена. Текущий полный PHP:
<html>
<body>
<?php
function spamcheck($field)
{
// Sanitize e-mail address
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
// Validate e-mail address
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>
<?php
if (isset($_POST['inputemail']))
{
$mailcheck = spamcheck($_POST['inputemail']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{
// This still needs to be debugged online as soon as possible
$from = $_POST['inputemail'];
$name = $_POST['inputname'];
$phone = $_POST['inputphone'];
$date = $_POST['inputdate'];
$time = $_POST['inputtime'];
$data = $_POST['inputprotection'];
$subject = $_POST['inputdropdown'];
$message = $_POST['inputmessage'];
$message = wordwrap($message, 70);
mail("[email protected]",$subject,$message,"From: $from\n" . "Name: $name\n" . "Phone: $phone\n" . "Date: $date\n" . "Time: $time\n" . "Keep Data? $data\n");
echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
}
}
?>
</body>
и временно размещается по адресу http://luke-hale.com/temp/contact.html. Я уверен, что это всего лишь случай дезинформирования с моей стороны, но любая помощь будет отличной, ура!
РЕДАКТИРОВАТЬ:
хорошо, так что проблема сортируется с помощью:
$subject = $_POST['inputdropdown'];
$message = $_POST['inputmessage'] . "\r\n\r\n" . $_POST['inputname'];
$message = wordwrap($message, 70);
$headers = "From: " . $_POST['inputemail'];
mail("[email protected]",$subject,$message,$headers);
echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
Что работает, хотя не отображает $ headers нигде, но я не слишком суетился об этом, следующее - это перенаправление, которое я обычно выполняю через:
header("refresh:5;url=http://www.domain.com")
Хотя раньше это не работало правильно, я применил бы редактирование при проверке на будущую ссылку anyones.
РЕДАКТИРОВАТЬ
Таким образом, форма работает, но перенаправить ее нет. Сайт по-прежнему размещен в том же домене, но теперь полный PHP выглядит так:
<html>
<body>
<?php
function spamcheck($field)
{
// Sanitize e-mail address
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
// Validate e-mail address
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>
<?php
if (isset($_POST['inputemail']))
{
$mailcheck = spamcheck($_POST['inputemail']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{
$subject = $_POST['inputdropdown'];
$message = "Name: " . $_POST['inputname'] . "\r\n\r\n" . "Email: " . $_POST['inputemail'] . "\r\n\r\n" . "Phone: " . $_POST['inputphone'] . "\r\n\r\n" . "Date: " . $_POST['inputdate'] . "\r\n\r\n" . "Time: " . $_POST['inputtime'] . "\r\n\r\n" . "Retain Data? " . $_POST['inputprotection'] . "\r\n\r\n" . "Message: " . $_POST['inputmessage'];
$message = wordwrap($message, 70);
$headers = "From: " . $_POST['inputemail'];
mail("[email protected]",$subject,$message,$headers);
echo "Thank you for sending us feedback, you'll be redirected in 5 seconds";
}
}
header("refresh:5;url=http://www.domain.com")
?>
</body>
Форма по-прежнему отправляет штраф, но возврат указывает, что строка, начинающаяся с "заголовка", не может быть передана, поскольку данные браузера уже изменены. Я не уверен, что я сделал или где, если бы кто-нибудь мог протянуть руку, это было бы здорово!
ЗАВЕРШЕНИЕ
Мой окончательный, полностью работающий код:
<?php
function spamcheck($field)
{
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>
<?php
ob_start();
if (isset($_REQUEST['inputemail'])&&($_REQUEST['inputname'])&&($_REQUEST['inputmessage']))
{
$mailcheck = spamcheck($_POST['inputemail']);
if ($mailcheck==FALSE)
{
echo "Invalid email, you'll be redirected ";
header("refresh:5;url=http://www.luke-hale.com/");
}
else
{
$subject = $_POST['inputdropdown'];
$message = "Name: " . $_POST['inputname'] . "\r\n\r\n" . "Email: " . $_POST['inputemail'] . "\r\n\r\n" . "Phone: " . $_POST['inputphone'] . "\r\n\r\n" . "Date: " . $_POST['inputdate'] . "\r\n\r\n" . "Time: " . $_POST['inputtime'] . "\r\n\r\n" . "Retain Data? " . $_POST['inputprotection'] . "\r\n\r\n" . "Message: " . $_POST['inputmessage'];
$message = wordwrap($message, 70);
$headers = "From: " . $_POST['inputemail'];
mail("[email protected]",$subject,$message,$headers);
echo "Thank you for your messgae, I'll get back to you as soon as possible! You'll be redirected in 5 seconds.";
}
header("refresh:5;url=http://www.luke-hale.com/");
}
else
{
echo "You did not fill all the required fields, please try again.";
header("refresh:5;url=http://www.luke-hale.com/");
}
?>
Попробуйте поместить данные формы в переменную $message
, вставьте \n
после каждого атрибута, чтобы указать новую строку. Не используйте заголовок.
Расположение и обновление требуют абсолютного URI
header('Location: http://www.domain.com');
Примеры для почты:
qaru.site/questions/8281915/...
qaru.site/questions/8281662/...
mail("Your Email Address Here",$subject,$therest,"subject: $subject\n");
U сказал следующее: "Функция почты также не является проблемой, а правильный синтаксис -" mail($to,$subject,$message,$headers,$parameters)
Объяснение:
your email adress = $to
$subject = $subject
$therest = $message (rename it if you want)
"subject: $subject\n" = the header (change it to $headers if you want that)
Пример заголовка (как в документации)
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
Вы можете повторить Javascript внизу вашего PHP-скрипта, который перенаправляет, а именно:
$url = "url";
$time = 5000 // time in milliseconds
print "<script>window.setTimeout(function(){window.location='".$url."'},".$time.") </script>"