Как запретить отправлять форму при заходе на сайт и обновлении старинцы?

Для запрета отправки формы при заходе на сайт и обновлении страницы в PHP вы можете использовать технику избегания повторной отправки данных ("POST/Redirect/GET pattern").

Этот шаблон решает проблему повторной отправки данных формы при обновлении страницы. Процесс выглядит следующим образом:

1. При отправке данных формы на сервер (методом POST), вы должны выполнить необходимые операции и сохранить эти данные, например, в базе данных или в сессии пользователя.

2. После того, как данные сохранены, вы должны выполнить перенаправление пользователя на другую страницу, используя метод редиректа (например, через заголовок "Location").

3. Когда пользователь получает этот редирект, его браузер выполняет 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, и повторной отправки формы не произойдет.