@freeman0204

Как отменить повторную отправку формы?

Я знаю что ответов в сети много, все что находил у меня не работают.
Нашел что нужно прописать в файле скрипта header("Location: ".$_SERVER["HTTP_REFERER"]); не помогло.
Суть такова, через ajax выполняется php скрипт. И если зайти на страницу этого скрипта и просто обновлять страницу то приходят пустые данные в базу. И если просто нажимать на форме отправить и не заполнить ее то ситуация такая же. Как можно от этого избавится?
  • Вопрос задан
  • 1242 просмотра
Решения вопроса 3
Inkognitoss
@Inkognitoss
Full-stack разработчик.
Делать проверку, что запрос сделан через POST, например, и падать.
Тогда только по ajax ну или если вручную кто кинет POST запрос, через curl или еще какую-нибудь тулзу.
А вообще для этого CAPTCHA и существует, можете ей воспользоваться.
Ответ написан
Комментировать
webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...
AJAX + POST и никаких проблем.
Ответ написан
Palehin
@Palehin
Frontend
1. Делайте валидацию полей формы на клиенте и сервере.
2. После отправки формы - очищайте форму и POST запрос
3. в начале файла обрабатывающего отправку формы через ajax пропишите:
header('Content-Type: text/html; charset=utf-8');
	if(!(isset($_SERVER['HTTP_X_REQUESTED_WITH'])))
		header("location: /"); //действие, если запрос не ajax


ну и можна капчу поставить для надежности, но не обязательно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы