@freeman0204

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

Я знаю что ответов в сети много, все что находил у меня не работают.
Нашел что нужно прописать в файле скрипта header("Location: ".$_SERVER["HTTP_REFERER"]); не помогло.
Суть такова, через ajax выполняется php скрипт. И если зайти на страницу этого скрипта и просто обновлять страницу то приходят пустые данные в базу. И если просто нажимать на форме отправить и не заполнить ее то ситуация такая же. Как можно от этого избавится?
  • Вопрос задан
  • 1235 просмотров
Решения вопроса 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


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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 11:46
3000 руб./за проект
23 апр. 2024, в 11:38
20000 руб./за проект