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]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Не работает обновление страницы
Евгений 777
Отправлено: 08 Июля, 2011 - 19:52:44
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




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

P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
LIME
Отправлено: 08 Июля, 2011 - 20:02:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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

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

в JS есть таймеры
(Добавление)
к томуже в локэйшн тоже есть время
 
 Top
White
Отправлено: 08 Июля, 2011 - 20:06:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Евгений 777 пишет:
P.S. На многих фреймворках даже такая же проблема, хоть я сам их ненавижу, никогда не использовал, но знакомые говорят что часто такая недоделка в них есть.


какая именно проблема? не доконца понял


-----
if(time()>1356048000) die();
 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 20:10:10
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




LIME пишет:
так JS будет на странице с надписью о перенаправлении

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

То что при попытке обновления страницы вручную вылетает окно "отправить заново". Может это и не во фреймворке дело, но лично я на многих сайтах такое наблюдаю

(Отредактировано автором: 08 Июля, 2011 - 20:14:05)



-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
LIME
Отправлено: 08 Июля, 2011 - 20:14:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Евгений 777 ну не суть...самое страшное не обновится и все
 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 20:17:08
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




LIME пишет:
Евгений 777 ну не суть...самое страшное не обновится и все

А код тогда можно? Растерялся пожалуйста, желательно с таймаутом (таймером) Если не трудно


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
White
Отправлено: 08 Июля, 2011 - 20:18:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Евгений 777 пишет:
формы надпись "Комеент добавлен"


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

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


ну и пусть себе вылетает, если юзеру делать нечего на refresh жать пусть жмет. Главное чтобы данные повторно не записывались.


-----
if(time()>1356048000) die();
 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 20:25:35
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




White пишет:
если юзеру делать нечего на refresh жать пусть жмет

Подмигивание Я с Вами согласен Радость , пусть хоть зажмётся, но для подстраховки нужно хотя бы JS прикрутить для редиректа, отключит JS, так отключит, капча всё равно не пропустит, пока код по новой не наберёшь. На счёт доп поля в базе думал тоже, но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
LIME
Отправлено: 08 Июля, 2011 - 20:27:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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

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



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Евгений 777 пишет:
но если честно не вижу смысла в этом, только лишний раз сервак нагружать запросами.


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

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

на случай если отключит или ждать надоело - ссылка "жмите здесь", а если не отключит то через время все равно переадресация пойдет.


-----
if(time()>1356048000) die();
 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 20:37:41
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




LIME Так то оно так, понятно. Просто у меня немного по другому сделано. Сейчас тоже продумываю вариант выноса обработчика в отдельный файл, но с моей структурой сайта это не так легко


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
LIME
Отправлено: 08 Июля, 2011 - 20:45:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




setInterval('window.location.href = "URL" ',время в млсек)
както так кажется

(Отредактировано автором: 08 Июля, 2011 - 20:59:24)

 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 22:00:32
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




LIME БЛАГОДАРЮ!!!


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
LIME
Отправлено: 08 Июля, 2011 - 22:06:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




setTimeout вместо setInterval правильнее ))...интервал срабатывает многократно
понятно что тут неважно но всеже
 
 Top
Евгений 777
Отправлено: 08 Июля, 2011 - 22:10:08
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




LIME Поблагодарил тебя в статусе. Ещё раз спасибо, блин я недели 2 парился, веришь нет Подмигивание Не хватает у меня ума сразу всё охватить, php то с трудом осваиваю.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB