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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Обновление страницы [3]
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
White Я пробовал JS, кстати никак не хватает ума его поучить (код откуда то брал, но его у меня уже нету), но в этом случае 2 проблемы. Во первых, если кому нибудь захочется "похулиганить", так он специально может отключить JS у себя и вторая проблема в том, что когда я пользуюсь refresh, я указываю интервал времени, чтобы пользователь видел сообщение "Ваш коммент добавлен", на JS же я такого сделать не смог, он моментально перезагружает страницу. Да, браузер уже не выдаёт запрос "отправить заново", но и выдержки времени не происходит. Решение первой проблемы вроде бы есть, у меня кроме полей формы подключена капча, если чел тупо обновит страницу специально, то данные не запишутся в базу, т.к. капча не пропустит, но это не код, а "костыль", лишь бы как то работало, а это не правильно. Если я в чём то не прав, объясните плиз.
P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.
----- Написать код не проблема. Написать правильный код- это наука.
LIME
Отправлено: 08 Июля, 2011 - 20:02:05
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Евгений 777 пишет:
Во первых, если кому нибудь захочется "похулиганить", так он специально может отключить JS у себя
так JS будет на странице с надписью о перенаправлении ...если отключить то эта страница просто застынет и все ..
Евгений 777 пишет:
вторая проблема в том, что когда я пользуюсь refresh, я указываю интервал времени
в JS есть таймеры (Добавление)
к томуже в локэйшн тоже есть время
White
Отправлено: 08 Июля, 2011 - 20:06:16
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
Евгений 777 пишет:
P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.
какая именно проблема? не доконца понял
----- if(time()>1356048000) die();
Евгений 777
Отправлено: 08 Июля, 2011 - 20:10:10
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
LIME пишет:
так JS будет на странице с надписью о перенаправлении
Возможно я не так Вас понял, но страницы с надписью у меня не будет. В общем открывается страница со статьёй, под ней комменты и форма. Если заполняешь форму, отправляешь, то грузится снова эта же страница, только вместо формы надпись "Комеент добавлен", после чего срабатывает обновление, эта страница грузится снова, но уже с этим новым комментом и без сообщения "Коммент добавлен". Короче говоря обработчик формы будет не в отдельном файле.
White пишет:
какая именно проблема? не доконца понял
То что при попытке обновления страницы вручную вылетает окно "отправить заново". Может это и не во фреймворке дело, но лично я на многих сайтах такое наблюдаю
----- Написать код не проблема. Написать правильный код- это наука.
LIME
Отправлено: 08 Июля, 2011 - 20:14:05
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Евгений 777 ну не суть...самое страшное не обновится и все
Евгений 777
Отправлено: 08 Июля, 2011 - 20:17:08
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
LIME пишет:
Евгений 777 ну не суть...самое страшное не обновится и все
А код тогда можно? пожалуйста, желательно с таймаутом (таймером) Если не трудно
----- Написать код не проблема. Написать правильный код- это наука.
White
Отправлено: 08 Июля, 2011 - 20:18:52
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
Евгений 777 пишет:
формы надпись "Комеент добавлен"
а можно "Комеент добавлен. Нажмите здесь если ваш браузер не поддерживает переадресацию"
а в таблице юзеров например добавить поле `lastsubmit`, куда во время добавления в базу записывать time(), и перед записью проверять если разница между $user['lastsubmit'] и time() меньше скажем 30(время в секундах делать die('отправка сообщения возможна через'.(30-(int)$user['lastsubmit']-time())) (Добавление)
Евгений 777 пишет:
То что при попытке обновления страницы вручную вылетает окно "отправить заново". Может это и не во фреймворке дело, но лично я на многих сайтах такое наблюдаю
ну и пусть себе вылетает, если юзеру делать нечего на refresh жать пусть жмет. Главное чтобы данные повторно не записывались.
----- if(time()>1356048000) die();
Евгений 777
Отправлено: 08 Июля, 2011 - 20:25:35
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
White пишет:
если юзеру делать нечего на refresh жать пусть жмет
Я с Вами согласен , пусть хоть зажмётся, но для подстраховки нужно хотя бы JS прикрутить для редиректа, отключит JS, так отключит, капча всё равно не пропустит, пока код по новой не наберёшь. На счёт доп поля в базе думал тоже, но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.
----- Написать код не проблема. Написать правильный код- это наука.
LIME
Отправлено: 08 Июля, 2011 - 20:27:21
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Евгений 777 пишет:
Если заполняешь форму, отправляешь, то грузится снова эта же страница, только вместо формы надпись "Комеент добавлен", после чего срабатывает обновление, эта страница грузится снова, но уже с этим новым комментом и без сообщения "Коммент добавлен"
погодите я вообще не понимаю зачен нужен этот извините гимор...
с формы отправлять на отдельный скрипт который запишет в БД и выдаст локейшн с временем и надпись нужную в центр экрана и обратно на форум...
так как это и здесь сделано...
поправте если я чегото не понимаю
White
Отправлено: 08 Июля, 2011 - 20:30:32
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
Евгений 777 пишет:
но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.
это как пример, а вообще способов ограничить повторную отправку много, например временный файл с именем юзера можно создавать, и проверять время создания, опять же сравнивать с time()
Евгений 777 пишет:
но для подстраховки нужно хотя бы JS прикрутить для редиректа
на случай если отключит или ждать надоело - ссылка "жмите здесь", а если не отключит то через время все равно переадресация пойдет.
----- if(time()>1356048000) die();
Евгений 777
Отправлено: 08 Июля, 2011 - 20:37:41
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
LIME Так то оно так, понятно. Просто у меня немного по другому сделано. Сейчас тоже продумываю вариант выноса обработчика в отдельный файл, но с моей структурой сайта это не так легко
----- Написать код не проблема. Написать правильный код- это наука.
LIME
Отправлено: 08 Июля, 2011 - 20:45:12
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
setInterval('window.location.href = "URL" ',время в млсек)
както так кажется
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
LIME БЛАГОДАРЮ!!!
----- Написать код не проблема. Написать правильный код- это наука.
LIME
Отправлено: 08 Июля, 2011 - 22:06:11
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
setTimeout вместо setInterval правильнее ))...интервал срабатывает многократно
понятно что тут неважно но всеже
Евгений 777
Отправлено: 08 Июля, 2011 - 22:10:08
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
LIME Поблагодарил тебя в статусе. Ещё раз спасибо, блин я недели 2 парился, веришь нет Не хватает у меня ума сразу всё охватить, php то с трудом осваиваю.
----- Написать код не проблема. Написать правильный код- это наука.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.