Для запрета отправки формы при заходе на сайт и обновлении страницы в PHP вы можете использовать технику избегания повторной отправки данных ("POST/Redirect/GET pattern").
Этот шаблон решает проблему повторной отправки данных формы при обновлении страницы. Процесс выглядит следующим образом:
- При отправке данных формы на сервер (методом POST), вы должны выполнить необходимые операции и сохранить эти данные, например, в базе данных или в сессии пользователя.
- После того, как данные сохранены, вы должны выполнить перенаправление пользователя на другую страницу, используя метод редиректа (например, через заголовок "Location").
- Когда пользователь получает этот редирект, его браузер выполняет GET-запрос к новой странице за счет обновления страницы. Таким образом, повторная отправка данных формы не происходит.
Вот пример простого кода PHP, который реализует эту концепцию:
<?php session_start(); // Проверяем, была ли уже отправлена форма if ($_SERVER['REQUEST_METHOD'] === 'POST' && !isset($_SESSION['form_submitted'])) { // Обрабатываем данные формы // ... // Сохраняем данные в сессии или базе данных // ... // Устанавливаем флаг, чтобы предотвратить повторную отправку $_SESSION['form_submitted'] = true; // Выполняем перенаправление пользователя на другую страницу header('Location: новая_страница.php'); exit; } ?>
В этом примере мы используем сессии для хранения флага, который указывает на то, что форма уже была отправлена. После обработки данных формы и сохранения их, мы делаем редирект на новую страницу.
На новой странице вы можете проверить флаг $_SESSION['form_submitted']
, чтобы убедиться, что форма была отправлена, и считывать данные из сессии или базы данных для дальнейшей обработки.
Таким образом, при обновлении страницы пользователь получит новую страницу методом GET, и повторной отправки формы не произойдет.