Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Обновление страницы [3]
Форумы портала PHP.SU » » HTTP и PHP » Обновление страницы

Страниц (3): « 1 2 [3]
 

31. Евгений 777 - 08 Июля, 2011 - 19:52:44 - перейти к сообщению
White Я пробовал JS, кстати никак не хватает ума его поучить (код откуда то брал, но его у меня уже нету), но в этом случае 2 проблемы. Во первых, если кому нибудь захочется "похулиганить", так он специально может отключить JS у себя и вторая проблема в том, что когда я пользуюсь refresh, я указываю интервал времени, чтобы пользователь видел сообщение "Ваш коммент добавлен", на JS же я такого сделать не смог, он моментально перезагружает страницу. Да, браузер уже не выдаёт запрос "отправить заново", но и выдержки времени не происходит. Решение первой проблемы вроде бы есть, у меня кроме полей формы подключена капча, если чел тупо обновит страницу специально, то данные не запишутся в базу, т.к. капча не пропустит, но это не код, а "костыль", лишь бы как то работало, а это не правильно. Если я в чём то не прав, объясните плиз.

P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.
32. LIME - 08 Июля, 2011 - 20:02:05 - перейти к сообщению
Евгений 777 пишет:
Во первых, если кому нибудь захочется "похулиганить", так он специально может отключить JS у себя

так JS будет на странице с надписью о перенаправлении ...если отключить то эта страница просто застынет и все ..
Евгений 777 пишет:
вторая проблема в том, что когда я пользуюсь refresh, я указываю интервал времени

в JS есть таймеры
(Добавление)
к томуже в локэйшн тоже есть время
33. White - 08 Июля, 2011 - 20:06:16 - перейти к сообщению
Евгений 777 пишет:
P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.


какая именно проблема? не доконца понял
34. Евгений 777 - 08 Июля, 2011 - 20:10:10 - перейти к сообщению
LIME пишет:
так JS будет на странице с надписью о перенаправлении

Возможно я не так Вас понял, но страницы с надписью у меня не будет. В общем открывается страница со статьёй, под ней комменты и форма. Если заполняешь форму, отправляешь, то грузится снова эта же страница, только вместо формы надпись "Комеент добавлен", после чего срабатывает обновление, эта страница грузится снова, но уже с этим новым комментом и без сообщения "Коммент добавлен". Короче говоря обработчик формы будет не в отдельном файле.
White пишет:
какая именно проблема? не доконца понял

То что при попытке обновления страницы вручную вылетает окно "отправить заново". Может это и не во фреймворке дело, но лично я на многих сайтах такое наблюдаю
35. LIME - 08 Июля, 2011 - 20:14:05 - перейти к сообщению
Евгений 777 ну не суть...самое страшное не обновится и все
36. Евгений 777 - 08 Июля, 2011 - 20:17:08 - перейти к сообщению
LIME пишет:
Евгений 777 ну не суть...самое страшное не обновится и все

А код тогда можно? Растерялся пожалуйста, желательно с таймаутом (таймером) Если не трудно
37. White - 08 Июля, 2011 - 20:18:52 - перейти к сообщению
Евгений 777 пишет:
формы надпись "Комеент добавлен"


а можно "Комеент добавлен. Нажмите здесь если ваш браузер не поддерживает переадресацию"

а в таблице юзеров например добавить поле `lastsubmit`, куда во время добавления в базу записывать time(), и перед записью проверять если разница между $user['lastsubmit'] и time() меньше скажем 30(время в секундах делать die('отправка сообщения возможна через'.(30-(int)$user['lastsubmit']-time()))
(Добавление)
Евгений 777 пишет:
То что при попытке обновления страницы вручную вылетает окно "отправить заново". Может это и не во фреймворке дело, но лично я на многих сайтах такое наблюдаю


ну и пусть себе вылетает, если юзеру делать нечего на refresh жать пусть жмет. Главное чтобы данные повторно не записывались.
38. Евгений 777 - 08 Июля, 2011 - 20:25:35 - перейти к сообщению
White пишет:
если юзеру делать нечего на refresh жать пусть жмет

Подмигивание Я с Вами согласен Радость , пусть хоть зажмётся, но для подстраховки нужно хотя бы JS прикрутить для редиректа, отключит JS, так отключит, капча всё равно не пропустит, пока код по новой не наберёшь. На счёт доп поля в базе думал тоже, но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.
39. LIME - 08 Июля, 2011 - 20:27:21 - перейти к сообщению
Евгений 777 пишет:
Если заполняешь форму, отправляешь, то грузится снова эта же страница, только вместо формы надпись "Комеент добавлен", после чего срабатывает обновление, эта страница грузится снова, но уже с этим новым комментом и без сообщения "Коммент добавлен"

погодите я вообще не понимаю зачен нужен этот извините гимор...
с формы отправлять на отдельный скрипт который запишет в БД и выдаст локейшн с временем и надпись нужную в центр экрана и обратно на форум...
так как это и здесь сделано...
поправте если я чегото не понимаю
40. White - 08 Июля, 2011 - 20:30:32 - перейти к сообщению
Евгений 777 пишет:
но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.


это как пример, а вообще способов ограничить повторную отправку много, например временный файл с именем юзера можно создавать, и проверять время создания, опять же сравнивать с time()

Евгений 777 пишет:
но для подстраховки нужно хотя бы JS прикрутить для редиректа

на случай если отключит или ждать надоело - ссылка "жмите здесь", а если не отключит то через время все равно переадресация пойдет.
41. Евгений 777 - 08 Июля, 2011 - 20:37:41 - перейти к сообщению
LIME Так то оно так, понятно. Просто у меня немного по другому сделано. Сейчас тоже продумываю вариант выноса обработчика в отдельный файл, но с моей структурой сайта это не так легко
42. LIME - 08 Июля, 2011 - 20:45:12 - перейти к сообщению
setInterval('window.location.href = "URL" ',время в млсек)
както так кажется
43. Евгений 777 - 08 Июля, 2011 - 22:00:32 - перейти к сообщению
LIME БЛАГОДАРЮ!!!
44. LIME - 08 Июля, 2011 - 22:06:11 - перейти к сообщению
setTimeout вместо setInterval правильнее ))...интервал срабатывает многократно
понятно что тут неважно но всеже
45. Евгений 777 - 08 Июля, 2011 - 22:10:08 - перейти к сообщению
LIME Поблагодарил тебя в статусе. Ещё раз спасибо, блин я недели 2 парился, веришь нет Подмигивание Не хватает у меня ума сразу всё охватить, php то с трудом осваиваю.

 

Powered by ExBB FM 1.0 RC1