В настоящее время я программирую веб-сайт для школьного проекта, в котором я должен организовывать ежедневные расписания / отчеты.
Следующая ситуация: я вставляю следующее в PHP:
$sqlinserttb = "INSERT INTO tagesberichte (`TbID`, `Tagesberichte`, `Datum`) VALUES ('DEFAULT', '".$tagesbericht."', '".$datum."');";
Если файл отправлен, он вставляет его. Проблема в том, что когда я нажимаю F5 или вручную обновляю браузер, страница вставляет его снова с последними использованными входами.
Что я упустил?
Использовать header("location: <path to your self-submitting form>");
после того, как вы закончите вставку, таким образом будет отображаться новая форма и обновление не должно приводить к отправке снова.
Из объяснения использования, которое вы объяснили, я понимаю, что у вас есть собственная форма отправки (отправка на ту же страницу и запрос на обработку). Вы можете хранить ваши переменные запроса в php-сессиях, а затем проверять входящие данные запроса с данными в сеансе (если сеанс существует). Если это так, тогда отобразите сообщение об ошибке, иначе вставьте, а затем установите сеанс с данными запроса.
Если вы обновите URL-адрес, все соответствующие данные будут отправлены в php-скрипт, как и сам пользователь. Чтобы справиться с этим, вы могли: 1. Использовать метод post для отправки результата на сервер. Это не исключает ситуаций с обновлением страницы, но большинство браузеров спрашивают пользователя: «Вы действительно хотите отправить все данные на сервер?» 2. Используйте перенаправление после того, как скрипт php продолжит работу с вашим входом. В этом случае браузер не будет иметь данные для повторной отправки. Но пользователь может вернуться к предыдущей странице и снова отправить данные повторно. 3. Также вы могли бы предоставить какие-то переменные «meta http-equiv =» Cache-Control «…», чтобы срок действия страницы истек.