В настоящее время я работаю над страницей «Связаться с нами» (contact.html). Отправка электронной почты обрабатывается файлом php (mailer.php). Пока что функции, которые я хочу делать, работают правильно, электронные письма отправляются, меня перенаправляют на свою страницу успеха и все такое. Однако я хочу ограничить доступ людей к моей странице успеха напрямую.
В mailer.php я перенаправляю с помощью этого кода:
header('Location: success.html');
exit;
Как я могу запретить пользователям прямой доступ к этой странице, введя адрес в адресную строку?
Заранее спасибо.
Вы можете проверить сессию. установите какой-нибудь флаг и проверьте, правда ли он, тогда пользователь может получить доступ к странице.
Во-первых, вам нужно использовать метод POST для формы вместо GET, а затем использовать токен CSRF для предотвращения прямого доступа.






Прежде всего, вам нужно преобразовать свою html-страницу в php, затем вы можете установить переменную сеанса на своей странице контактов с нами, а затем, когда почта будет успешно отправлена пользователю, вы можете проверить значение этой переменной сеанса, чтобы определить погоду для перенаправления. пользователь или нет.
Предположим, это ваша страница контактов.
<?php
// code for sending mail
if (the mail is sent successfully then)
{
$_SESSION["redirect_to_success"]=true;
}
?>
Это может быть код на странице успеха
<?php
if (!isset($_SESSION["redirect_to_success"]))
{
header("location:contactus.php");
}
else
{
unset($_SESSION["redirect_to_success"]);
}
?>
Здесь сброс переменной сеанса позволяет использовать перенаправление на страницу успеха только в случае успешной отправки почты. Как только он / она будет перенаправлен на страницу успеха, переменная сеанса будет сброшена. А также использование логических значений позволяет снизить потребление памяти.
после строки '$ _SESSION ["redirect_to_success"] = true; я должен вызвать success.php?
поэтому я вызвал success.php после установки значения сеанса, однако, похоже, что значение сеанса не сохраняется, поскольку я всегда перенаправлялся обратно на страницу контактов, даже если я получаю электронное письмо
ОБНОВЛЕНИЕ: я решил свою проблему, добавив session_start (); поверх обоих файлов php. Спасибо за помощь!
Вы можете использовать сеансы. Но вы должны изменить свой html-файл на php, чтобы ваша страница успеха могла проверять значения сеанса для обработки ограниченного доступа.