Я сделал код, чтобы предотвратить повторение отправки формы. В соответствии с этим кодом выполняется последовательность действий:
1. Пользователь отправляет почтовую форму.
2.Page отправляет данные формы. Начало сеанса. Все данные формы присваиваются глобальным переменным $ _SESSION. Почта отправляется функцией mail(). Переменная $ _SESSION ['sent'] = true; создано для эха «Спасибо, что обратились к нам!».
3.Тогда «если» выберете $ _SESSION ['sent'] и получите, что это правда ...
, а затем проблема возникла!
Потому что, как я понимаю, следующее действие должно повторять «Спасибо, что обратились к нам!». И тогда unset() должен уничтожить $ _SESSION ['sent'], чтобы предотвратить повторение показа «Спасибо ...»
Но этого не происходит, и вся форма контакта отображается на экране, что должно быть показано только случай, если $ _SESSION ['sent'] не установлен.
Итак, вопрос is unset ($ _ SESSION ['sent']) в if() {} уничтожить $ _SESSION ['sent'] в целом скрипте?
<?php
/* code for mailing and redirecting to the same page */
session_start();
if (!empty($_POST['tosendmail'])) {
$_SESSION['admin_email'] = "[email protected]";
$_SESSION['subject'] = $_REQUEST['subject'];
$_SESSION['email'] = $_REQUEST['email'];
$_SESSION['message'] = $_REQUEST['message'];
$send = mail($_SESSION['admin_email'], $_SESSION['who'], $_SESSION['message'], "From:" . $_SESSION['email']);
/* create variable $_SESSION['sent'] to use condition if (isset($_SESSION['sent'])) below */
if ($send) {
$_SESSION['sent'] = true;
}
header("Location: " . $_SERVER["REQUEST_URI"]);
}
if (isset($_SESSION['sent'])) {
?>
<h3 class="page-title">Thank you for contacting us!</h3>
<?php
unset($_SESSION['sent']);
} else {
?>
<!-- CONTACT FORM -->
<h3 class="page-title">Contact us:</h3>
<form class="contact-form" method="post">
Your name:<br>
<input type="text" name="subject" value=""><br>
E-mail:<br>
<input type="email" name="email" value=""><br>
Your message:<br>
<textarea type="text" name="message" rows="10" cols="40"></textarea><br><br>
<input type="submit" name="tosendmail" value="Send">
<input type="reset" value="Reset">
</form>
<?php }
?>
Ответ на титул будет 'yes' ... от чего-либо за пределами' unset' точки ... – FirstOne
Я думаю, что проблема ваша почта функция не выполняется. Поэтому $ _SESSION ['sent'] не задано в первую очередь. Попробуйте var_dump ($ send). Вероятно, он вернет false –
Возможно, он просто продолжает и отменяет значение сеанса. Попробуйте добавить 'exit();' сразу после перенаправления, поэтому 'header (" Location: ". $ _SERVER [" REQUEST_URI "]); exit(); ' – FirstOne