Обновление PHP, как я могу остановить повторный вызов предыдущей функции при обновлении страницы? - PullRequest
1 голос
/ 17 апреля 2011

У меня есть функция, которая импортирует содержимое файлов в mySQL и возвращает результаты.Если я обновлю страницу и нажму «да», она сделает это снова, удвоив вывод с тем же содержанием.

Как я могу остановить это?В этом конкретном случае в адресной строке нет URI, но в других функциях он есть.

Ответы [ 4 ]

2 голосов
/ 17 апреля 2011

Вы должны просто проверить, существует ли содержимое в базе данных, если нет, заполните его. В противном случае не запускайте функцию.

псевдо-код:

if !database.containsRecords
  fillDatabase()
end

Кроме того, всегда полезно перенаправить после запроса POST. Итак, вы хотели бы:

fillDatabase();
header("Location page.php");
exit();
1 голос
/ 17 апреля 2011

Вы должны использовать шаблон POST-redirect-GET .

После обновления базы данных отправьте HTTP-перенаправление на отдельную страницу с результатами.
Обновление браузера перезагрузит эту отдельную страницу.

1 голос
/ 17 апреля 2011

Запросите базу данных при каждой загрузке страницы и посмотрите, заполнена ли она уже.Если он был заполнен, не пытайтесь заполнить его снова.

0 голосов
/ 17 апреля 2011

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

...