Предотвращение прямого доступа к моей HTML-странице

В настоящее время я работаю над страницей «Связаться с нами» (contact.html). Отправка электронной почты обрабатывается файлом php (mailer.php). Пока что функции, которые я хочу делать, работают правильно, электронные письма отправляются, меня перенаправляют на свою страницу успеха и все такое. Однако я хочу ограничить доступ людей к моей странице успеха напрямую.

В mailer.php я перенаправляю с помощью этого кода:

header('Location: success.html');
exit;

Как я могу запретить пользователям прямой доступ к этой странице, введя адрес в адресную строку?

Заранее спасибо.

Вы можете использовать сеансы. Но вы должны изменить свой html-файл на php, чтобы ваша страница успеха могла проверять значения сеанса для обработки ограниченного доступа.

Karlo Kokkak 23.04.2018 07:14

Вы можете проверить сессию. установите какой-нибудь флаг и проверьте, правда ли он, тогда пользователь может получить доступ к странице.

prakash tank 23.04.2018 07:14

Во-первых, вам нужно использовать метод POST для формы вместо GET, а затем использовать токен CSRF для предотвращения прямого доступа.

abrar 23.04.2018 07:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
379
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, вам нужно преобразовать свою 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?

zoenightshade 23.04.2018 09:17

поэтому я вызвал success.php после установки значения сеанса, однако, похоже, что значение сеанса не сохраняется, поскольку я всегда перенаправлялся обратно на страницу контактов, даже если я получаю электронное письмо

zoenightshade 23.04.2018 10:21

ОБНОВЛЕНИЕ: я решил свою проблему, добавив session_start (); поверх обоих файлов php. Спасибо за помощь!

zoenightshade 23.04.2018 11:19

Другие вопросы по теме