ещё один ламерский вопрос по PHP — дублирующиеся сообщения @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 18 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Kostik Муж.
участник
16
Сообщения: 1145
Зарегистрирован: 13.05.04
Откуда: из Киева
Заголовок сообщения: ещё один ламерский вопрос по PHP — дублирующиеся сообщения
Сообщение Добавлено: 17 Май 2005, 18:15:53 
Написав собственный форум столкнулся с такой проблемой: полсле того, как сообщение было отосланно, нажатие "обновить" дублирует последнее сообщение.

Поиск по сети не помог (как ни странно, проблема вроде распостраненная для форумов).

Может видимо переданная ранее POST’ом инфа остается в силе, и записывается ещё раз. Если я правильно понял проблему, то можно её как-нибудь обнулить?
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 17 Май 2005, 18:19:05 
Kostik,
Регистрируй сессию при получении переменной и проверяй в начале не существует ли она?
Если уже есть выводи сообщение ВЫ НЕ МОЖЕТ ТАК ЧАСТО ОТСЫЛАТЬ СООБЩЕНИЯ

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
Kostik Муж.
участник
16
Сообщения: 1145
Зарегистрирован: 13.05.04
Откуда: из Киева
Сообщение Добавлено: 17 Май 2005, 18:44:20 
Kurilshik, ага, логично. Спасибо, должно вроде работать.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 17 Май 2005, 19:05:58 
и ещё стоит работать с POST в отдельном файле post.php например.
p.s.
хинт: header('location:index.php');

_________________
можно на ТЫ.
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 17 Май 2005, 19:45:03 
Kurilshik, а это спасет от такого - я полчаса подожду и нажму рефреш - даные не запишутся, правда? в следующий раз, прежде чем ответить - подумай.
Kostik, header тебя спасет.

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 17 Май 2005, 22:07:59 
Long, а зачем тебе такое делать?

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 18 Май 2005, 01:39:13 
по идее, header() не спасет если пользователь будет нажмать кнопку << Back
Long Муж.
SubAdmin
Теоретик
17
Сообщения: 4362
Зарегистрирован: 25.04.01
Откуда: Москва
Сообщение Добавлено: 18 Май 2005, 01:53:53 
Kurilshik, а ты прочитай внимательно условия того, что нужно сделать. а потом подумай соответсвует ли им твое "решение".
AlexShop, не надо идей. просто почитай http://phpclub.ru/faq/wakka.php?wakka=P … ions&v=ttm

_________________
Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.
frst Муж.
новый человек
0
Сообщения: 258
Зарегистрирован: 30.03.05
Откуда: Екатеринбург
Сообщение Добавлено: 18 Май 2005, 08:42:05 
гениальное решение сделали ребята с e1.ru ( http://www.e1.ru/talk/forum/ ) хотя не факт что ихняя придумка

вкратце - жабаскрипт делает кнопочку сабмит каменной после первого нажатия
adebt Муж.
соучастник
0
Сообщения: 478
Зарегистрирован: 25.11.02
Откуда: Україна (файне місто Луцьк)
Сообщение Добавлено: 18 Май 2005, 08:50:54 
frst, но эта "жаба" не делает каменной кнопочку F5 у тебя на клавиатуре.
Е1ena Жен.
постоянный участник
116
Сообщения: 3664
Зарегистрирован: 12.03.05
Сообщение Добавлено: 18 Май 2005, 10:12:51 

Kurilshik писал(а):
Long, а зачем тебе такое делать?



Я, правда не Long, но ответить могу.

Когда я только сделала свой хомячок, меня очень интересовал раздел "гостевая книга" :lady: Так что, через определенный промежуток времени, я его обновляла с завидной переиодичностью. В результате чего и столкнулась с вышеописанной проблемой. Правда, я так ее и не решила, ибо мне было не до того, а навыков в PHP кот наплакал. Хотя, в той ситуации для себя я все же нашла выход, но совсем другим способом.
Kurilshik
Goldmember
142
Сообщения: 12797
Зарегистрирован: 18.10.04
Откуда: Кожаное кресло
Сообщение Добавлено: 18 Май 2005, 10:34:02 
Long,
задача как я понял такая:
Предотвратить запись в БД аналогичных данных, нажатых случайно несколько раз.
Мое решение:
1. При получении регим сессию и проверяем не существует ли она
2. Заносим в БД отправленную инфу если все нормально и перебрасываем юзера на другую страницу с надписью СПАСИБО ЗА ОСТАВЛЕННОЕ СООБЩЕНИЕ
Если данные уже отправлялись перебрасываем юзера на страницу с другим сообщением

_________________

Портфолио - ЖЖ - Кулинарные рецепты - Блог о дизайне, уроки фотошоп

icq: 295346452 | Почта: info()alexey-popov.com

.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 18 Май 2005, 11:04:57 
Kurilshik, вектор направления у тебя верный, только куча перебросов и проверка существования сессии имхо зря.
нужно в сессию записать время поста и сравнить с временем новой отправки если < 15 мин то ничо не отправлять.
если больше. запишем новое время поста.

а вообще HEADER() + post.php (файл обработки постов и запросов в базу).
Никакие back, F5 и прочие радости ничего не испортят

_________________
можно на ТЫ.
Kostik Муж.
участник
16
Сообщения: 1145
Зарегистрирован: 13.05.04
Откуда: из Киева
Сообщение Добавлено: 18 Май 2005, 11:24:59 
да, кстати, проблему решил ещё более извращенно чем все вышеописанные способы:

после добавления сообщения форум принудительно обновляется
Код:
echo '<meta http-equiv="refresh" content="0">';


а после этого обновления, все остальные уже не несут никаких данных. Странно, но работает.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 18 Май 2005, 11:26:20 
ну маладец. это тебе и советывали в самом начале, только умным способом.

_________________
можно на ТЫ.
Kostik Муж.
участник
16
Сообщения: 1145
Зарегистрирован: 13.05.04
Откуда: из Киева
Сообщение Добавлено: 18 Май 2005, 11:44:46 
bE(o0L, к сожалению я умный совет проффтыкал, думая что он относится к совету про регистрацию сессии, а что значит header узнал только после предыдущего коммента.

2 all: Всем спасибо.
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 18 Май 2005, 17:49:57 
Рулезный топик.
Inviz Муж.
соучастник
0
Сообщения: 687
Зарегистрирован: 05.04.05
Сообщение Добавлено: 18 Май 2005, 20:54:47 
я делал так, при нажатии - каменная кнопка, потом обращение к post.php а потом редирект в тему.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 18 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100