При обновлении веб-страницы данные снова вставляются в БД - PullRequest
5 голосов
/ 28 июня 2010

У меня есть php веб-страница с формой.После заполнения формы на веб-странице я могу отправить ее на сервер.Но после этого, если я обновлю страницу, она вставит ту же запись в базу данных.Есть ли решения этой проблемы?

Ответы [ 7 ]

9 голосов
/ 28 июня 2010

Используйте шаблон POST / Redirect / GET .Это предотвратит повторную отправку пользователем той же формы.

4 голосов
/ 28 июня 2010

Есть несколько способов, например:

  • Создать токен, который вы вставляете в форму (скрытое поле). если один и тот же токен представлен дважды, откажитесь от второго подтверждения.
  • Проверьте в базе данных, если идентичный пост уже существует.
  • Сохранить форму отправки в переменной сеанса.
  • Перенаправить пользователя на вторую страницу после отправки, используя шаблон Post / Redirect / Get (желательно в сочетании с одним из вышеперечисленных).
1 голос
/ 28 июня 2010

Ну, вот что значит «Обновить»: «сделай это снова».

Вы можете проверить, есть ли данные, которые соответствуют представленным данным, уже в базе данных. Если это так, вы можете отклонить новую заявку.

1 голос
/ 28 июня 2010

Да, сделайте два запроса.Первый проверяет, чтобы убедиться, что данные еще не существуют в БД, второй выполняет вставку, если нет повторяющихся данных.Существует множество способов проверить наличие дублирующихся данных, но это основной процесс, который вам нужно пройти.

0 голосов
/ 28 июня 2010

Вы можете изменить свой запрос на INSERT IGNORE INTO table_name ...

, это помешает вам дважды вставить текст.

0 голосов
/ 28 июня 2010

Вы можете создать страницу process.php и установить для нее action формы.

In process.php

//code to insert item to database
header('Location: YOUR_FORM_PAGE_HERE);

Затем он отправит их обратно на исходную страницу, и никаких почтовых данных не будет

0 голосов
/ 28 июня 2010

Перед вставкой в ​​базу данных проверьте, не являются ли уже одинаковые значения дубликатами, и если они дубликаты, не вставляйте. Проверка нескольких столбцов помогает еще дальше. Например, вместо проверки только «имени пользователя», вы должны проверить «имя пользователя» И «пароль».

Очевидно, что приведенные выше примеры являются фальшивыми, но вы должны понять суть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...