Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторная отправка данных формы 
:(
    Опции темы
studentigor
Дата 1.9.2011, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Всем привет.
Есть форма для комментария. 
Всего одно поле textarea и кнопка.

Так вот, при нажатии на кнопку все записует, все ок. Но нажимаю F5 и снова записуется, и снова и снова.

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

.........
$rs = mysql_query($sq);
        header('Location:news.php?i='.$_GET['i'].'&pg='.$_GET['pg']);


может это просто в мазиле такая хрень. 
Пробовал джаваскриптом чистить форму - она пустая. пробовал делать unset($_POST) - ноль реакции.
Спасибо
PM MAIL   Вверх
kovaldm
Дата 1.9.2011, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.8.2011
Где: РФ

Репутация: 2
Всего: 2



А у тебя header точно срабатывает? Мож вывод какой-нибудь есть до него или BOM?
PM MAIL ICQ Skype   Вверх
studentigor
Дата 1.9.2011, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



Хедер, если до его есть вывод - не работает.
Я менял местами $_GET данные и перенаправило правильно, но вот это всеравно срабатывает
Код

if($_POST['action']=='save'){
    $tmp_dt = explode(' ',microtime());
    if($_POST['text_com'] !== ''){
        $sq = "INSERT INTO `coments` (`user_id`,`news_id`,`com_text`,`data_c`) VALUES
            ('".$_SESSION['user_id']."','".$_GET['i']."','".$_POST['text_com']."','$tmp_dt[1]')";
        $rs = mysql_query($sq);
        header('Location:news.php?i='.$_GET['i'].'&pg='.$_GET['pg']);
    }
}

перед этим подключается сессия и файл с настройками бд
PM MAIL   Вверх
kovaldm
Дата 1.9.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.8.2011
Где: РФ

Репутация: 2
Всего: 2



Не понял, после перенаправления нажатие F5 все равно отправляет данные серверу?

Вместо microtime() и explode() можно использовть time().

Это сообщение отредактировал(а) kovaldm - 1.9.2011, 19:44
PM MAIL ICQ Skype   Вверх
studentigor
Дата 1.9.2011, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



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


PM MAIL   Вверх
kovaldm
Дата 1.9.2011, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.8.2011
Где: РФ

Репутация: 2
Всего: 2



Попробуй включи буферизацию первой строчкой в индексе.
PM MAIL ICQ Skype   Вверх
MoLeX
Дата 2.9.2011, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



после header надо ставить exit();


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 2.9.2011, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



а может просто поставить "маячок"? Например, записать в сессию номер записи после первого сохранения. А перед записью в базу проверять существование ID, а если есть, то существование его уже в самой базе.. Тогда ты избежишь перезаписи в базу..

Очень простая, но действующая защита от дураков... smile

А ещё можно воспользоваться не INSERT, а REPLACE


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Absinthe
Дата 2.9.2011, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

а может просто поставить "маячок"?
 Проще? Проще чем примитивный и отлично работающий редирект?
PM MAIL   Вверх
Gold Dragon
Дата 2.9.2011, 13:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Absinthe, ещё есть кнопка НАЗАД у браузеров. Это тоже самое что F5 будет

Это сообщение отредактировал(а) Gold Dragon - 2.9.2011, 13:35


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Smorodin
Дата 2.9.2011, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Так после хедера стоит или нет exit()? Если стоит, то все равно заново отправляет?


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
Gold Dragon
Дата 3.9.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Absinthe @  2.9.2011,  16:37 Найти цитируемый пост)
 И что? 
да то что запрос будет отправлен повторно



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Absinthe
Дата 3.9.2011, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

да то что запрос будет отправлен повторно
 С чего бы, если есть редирект?
PM MAIL   Вверх
MoLeX
Дата 3.9.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



по всей видимости у тс редирект не проходит


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
capitan
Дата 4.9.2011, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



Поясните пожалуйста как возможно одновременное использование $_GET и $_POST ? Это  не возможно. Вы уж определитесь как происходит передача данных.
Код

if($_POST['action']=='save'){
    $tmp_dt = explode(' ',microtime());
    if($_POST['text_com'] !== ''){
        $sq = "INSERT INTO `coments` (`user_id`,`news_id`,`com_text`,`data_c`) VALUES
            ('".$_SESSION['user_id']."','".$_GET['i']."','".$_POST['text_com']."','$tmp_dt[1]')";
        $rs = mysql_query($sq);
        header('Location:news.php?i='.$_GET['i'].'&pg='.$_GET['pg']);
    }
}

PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0689 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.