| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Повторная отправка данных формы |
| Автор: studentigor 1.9.2011, 19:15 | ||
| Всем привет. Есть форма для комментария. Всего одно поле textarea и кнопка. Так вот, при нажатии на кнопку все записует, все ок. Но нажимаю F5 и снова записуется, и снова и снова. Я сделал редирект через хедер, но ничего не помогает. Как можно решить эту проблемку. Вот код где идет редирект
может это просто в мазиле такая хрень. Пробовал джаваскриптом чистить форму - она пустая. пробовал делать unset($_POST) - ноль реакции. Спасибо |
| Автор: kovaldm 1.9.2011, 19:28 |
| А у тебя header точно срабатывает? Мож вывод какой-нибудь есть до него или BOM? |
| Автор: studentigor 1.9.2011, 19:37 | ||
| Хедер, если до его есть вывод - не работает. Я менял местами $_GET данные и перенаправило правильно, но вот это всеравно срабатывает
перед этим подключается сессия и файл с настройками бд |
| Автор: kovaldm 1.9.2011, 19:43 |
| Не понял, после перенаправления нажатие F5 все равно отправляет данные серверу? Вместо microtime() и explode() можно использовть time(). |
| Автор: studentigor 1.9.2011, 19:54 |
| да. сколько раз нажимаю f5 столько и записуется в базу, хотя по идее не должно. |
| Автор: kovaldm 1.9.2011, 20:11 |
| Попробуй включи буферизацию первой строчкой в индексе. |
| Автор: MoLeX 2.9.2011, 07:36 |
| после header надо ставить exit(); |
| Автор: Gold Dragon 2.9.2011, 08:10 |
| а может просто поставить "маячок"? Например, записать в сессию номер записи после первого сохранения. А перед записью в базу проверять существование ID, а если есть, то существование его уже в самой базе.. Тогда ты избежишь перезаписи в базу.. Очень простая, но действующая защита от дураков... А ещё можно воспользоваться не INSERT, а REPLACE |
| Автор: Absinthe 2.9.2011, 13:24 | ||
|
| Автор: Gold Dragon 2.9.2011, 13:34 |
| Absinthe, ещё есть кнопка НАЗАД у браузеров. Это тоже самое что F5 будет |
| Автор: Smorodin 2.9.2011, 17:05 |
| Так после хедера стоит или нет exit()? Если стоит, то все равно заново отправляет? |
| Автор: Gold Dragon 3.9.2011, 16:35 |
| да то что запрос будет отправлен повторно |
| Автор: Absinthe 3.9.2011, 16:38 | ||
|
| Автор: MoLeX 3.9.2011, 17:52 |
| по всей видимости у тс редирект не проходит |
| Автор: capitan 4.9.2011, 00:24 | ||
Поясните пожалуйста как возможно одновременное использование $_GET и $_POST ? Это не возможно. Вы уж определитесь как происходит передача данных.
|
| Автор: MoLeX 4.9.2011, 05:17 | ||
capitan, я отвечу тебе
|
| Автор: capitan 4.9.2011, 12:20 | ||||||||
Это понятно, но это совершенно не правильно. Или используй глобальный массив $_GET или $_POST. Существуют же какие-то нормы. Я бы понял, если бы использовался $_REQUEST. Это что за запись?
проверка переменной делается или через isset или через empty
К чему я все это. К тому, что код нужно писать так, чтобы другой программист в нем быстро разобрался, а не посылал в вашу сторону лучи поноса за быдло-код. |
| Автор: Absinthe 4.9.2011, 14:06 | ||
|
| Автор: capitan 4.9.2011, 16:26 | ||
| Спорить не буду, чтобы не засорять тему. Останусь при своем мнении. Вот эта строчка должна выдавать "Notice: Undefined index: action", но ТС про это не говорит.
|