Подскажите, пожалуйста, как при обновлении страницы избежать повторной отправки php-скриптом данных в БД со страницы с формами.
Как вариант: Обработчик должен быть другим файлом, не там где форма, и после обработки переадресовывать на форму.
А еще какие-нибудь варианты имеются? Неохота дробить файлы на формы и скрипты - это только усложнить структуру. Тем более в одном месте у меня что-то типа комментариев и после отправки сообщения оно тут же должны появляться выше формы.
Прочитал, что повторы можно предотвратить, поставив в конце скрипта переадресацию на самого себя PHP: <?php header("Location: script.php"); exit; ?> Но что-то повторы все равно есть и выводится ошибка
То что я говорю - это образно. То что прочли Вы - это то же самое. Просто конструкция строится в If-else и в ней встроен весь код, у меня же идёт переадресация сразу на нужный обработчик. header нужно ставить до вывода какого либо текста (или формы, как у вас). Причём, после обработчика должен добавляется параметр, который появиться в сообщении, всё хорошо или были какие-либо ошибки.
if(isset($_GET['ok'])) { echo 'Добавлено'; } else { //проверки, добавления в базу header('location: /index.php?ok'); exit(); } до этого куска ничего не должно быть выведено.
Сделал формы и скрипты в разных файлах и переадресацию - повторы при обновлении прекратились. Еще такой вопрос. Где-то читал, что PHPBB специально слделана промежуточная страница между отравкой сообщения и его появлением в топике - это есть и на этом форуме. И сделано это для снижения нагрузки на БД. Стоит ли сделать такую промежуточную страницу между скриптом-обработчиком и формой? На IPB, кстати, такого нет.
можно использовать токен Nikolai_ И сделано это для снижения нагрузки на БД. Стоит ли сделать такую Ну а у вас нагрузки бешеные или три человека в час тыкаются?