Собственно то что есть:
есть кнопка , по нажатию которой вызывается таймер обратного отсчета. ну и тикает- тикает. но нерадивый пользователь берет и обновляет страницу. Собственно то, что нужно:
как после обновления страницы, после того как пользователь опять нажал на кнопку. отсчет начался с того времени,которое было у таймера,до произведенного обновления.
Начальное время таймера лежит в переменной.
1. SAD - 05 Февраля, 2010 - 10:27:06 - перейти к сообщению
2. EuGen - 05 Февраля, 2010 - 10:30:02 - перейти к сообщению
Хранить начало отсчета на сервере, при обновлении сравнивать его с текущим временем, тем самым получая число прошедших секунд.
Инициализировать таймер этим значением прошедших секунд.
Инициализировать таймер этим значением прошедших секунд.
3. SAD - 05 Февраля, 2010 - 10:33:05 - перейти к сообщению
Вот в чем проблема, по нажатию кнопки у меня вызывается функция javascript'овая , которая вызывает таймер на javascript, как мне время то загнать ,в этой функции, текущее на сервер - не получится?!
4. EuGen - 05 Февраля, 2010 - 11:18:46 - перейти к сообщению
Начальное время (время первоначального отсчета таймера) можете установить самим скриптом, а не js-функцией.
5. SAD - 05 Февраля, 2010 - 13:36:27 - перейти к сообщению
Давайте так, у меня в переменной $time храниться время работы таймера(в секундах).
После нажатия на кнопку у меня будет время $time_a, которое мне нужно как то помнить, после обновления и нажатия на кнопку будет время $time_b.
Данные , которые будут предоставляться скрипту с таймером выглядят так: $time+$time_a-$time_b. Как мне запомнить время $time_a?
После нажатия на кнопку у меня будет время $time_a, которое мне нужно как то помнить, после обновления и нажатия на кнопку будет время $time_b.
Данные , которые будут предоставляться скрипту с таймером выглядят так: $time+$time_a-$time_b. Как мне запомнить время $time_a?
6. EuGen - 05 Февраля, 2010 - 13:52:36 - перейти к сообщению
Можете в БД, можете в файл - как больше нравится
7. JustUserR - 06 Февраля, 2010 - 01:46:26 - перейти к сообщению
SAD Если считать что пользователь на намерен взламывать вашу страницу то можно значение положить в cookie с помощью JS-функций для работы с ними - и таким образом презагрузка страницы не будет влиять на время отсчета
Если возможность подстановки cookie критична то хранить время отсчета на сервере и с помощью Iframe или AJAX получать даное время - то есть нажал пользователь на кнопочку и через AJAX оставшееся время отсчета для данного пользователь отправили на сервера - а по onload страницы проверяем нет ли уже для данного пользователя счетчика времени и если есть то продолжаем его и не реагируем более не кнопку пока время не истечет Данный способ плох если нужно отсчитывать по таймеру достаточно малые промежутки времени - ведь если интернет у пользователя медленный то все это AJAX-запросы будут занимать много времени
Существуют и другие способы основанные на JS и перехвате событий
Если возможность подстановки cookie критична то хранить время отсчета на сервере и с помощью Iframe или AJAX получать даное время - то есть нажал пользователь на кнопочку и через AJAX оставшееся время отсчета для данного пользователь отправили на сервера - а по onload страницы проверяем нет ли уже для данного пользователя счетчика времени и если есть то продолжаем его и не реагируем более не кнопку пока время не истечет Данный способ плох если нужно отсчитывать по таймеру достаточно малые промежутки времени - ведь если интернет у пользователя медленный то все это AJAX-запросы будут занимать много времени
Существуют и другие способы основанные на JS и перехвате событий
8. SAD - 06 Февраля, 2010 - 03:05:43 - перейти к сообщению
спасибо за ответ, но как я узнаю в какой момент времени таймера я сделаю обновление страницы, чтобы можно было то значение запихнуть в куку?
(Добавление)
(Добавление)
Не спиться?))
9. JustUserR - 06 Февраля, 2010 - 03:31:50 - перейти к сообщению
SAD пишет:
Пожалуйста! На самом деле это узнать не сложно и ответ зависит от точности таймера - если время таймера большое и сильная точнсть не нужна то можно сохранять значение каждые 10 секунд к примеру Если же нужна большая точность то надо прибегать к средствам JS - например при перезагрузке генерируется событие onunload и можно попытаться успеть сохранить значение - если нужно сохранить значение чуть пораньше то можно использовать onreadystatechange и проверять начало выгрузки документа - существует вариант сохранять значение в window.hash документа то есть в адресоной строке после # но тут есть свои нюансыСпасибо за ответ, но как я узнаю в какой момент времени таймера я сделаю обновление страницы, что бы можно было, то значение запихнуть в куку?
SAD пишет:
Работать можно и ночью
Не спиться?))
10. SAD - 06 Февраля, 2010 - 03:35:09 - перейти к сообщению
JustUserR пишет:
Если же нужна большая точность то надо прибегать к средствам JS - например при перезагрузке генерируется событие onunload и можно попытаться успеть сохранить значение - если нужно сохранить значение чуть пораньше то можно использовать onreadystatechange и проверять начало выгрузки документа
а на примере это как будет выглядеть , хотя бы основные положения?
11. JustUserR - 07 Февраля, 2010 - 00:38:34 - перейти к сообщению
SAD пишет:
Самый просто метод это повесить событие на window.onunload и отменить данное событие с помощью установки event.cancelBubble=true и event.returnValue=false а также return false в конце функции обработчика - после этого выполняем действия по сохранению информации в cookie или с помощью запроса на сервер Iframe или AJAX и после этого продолжаем действие пользователя - перезагрузка или выход со страницы соответственно что можно определить по целевому window.location.hrefА на примере это как будет выглядеть , хотя бы основные положения?
Если не получится убрать событие window.onunload то проверять через короткий интервал времени не изменился ли readyState на выгрузку страницы и сделать действия по сохранию информации
Без обрабочки выхода со страницы впринципе тоже может получится но что в процессе выхода новые данные на сервер могут и не передаваться - поэтому надо подловить момент до выхода - как еще более простой вариант выход мыши за пределы окна (Рука тянется к крестику или меню или нажитие на Alt (РУка тянется к Alt+F4 или меню
12. SAD - 07 Февраля, 2010 - 13:49:14 - перейти к сообщению
[удалить]
13. JustUserR - 07 Февраля, 2010 - 14:10:13 - перейти к сообщению
SAD пишет:
Пожалуйста! Кстати существует еще одно интересное решение которое работает вообще без cookie и сохраняет информацию в других истоиниках - к примеру в query-строке URL-адреса и не дает его изменять спасибо за совет, воспользовался печеньками, по событию OnunLoad, повесил функцию, которая записывает текущее время в куки.
SAD пишет:
Может if(!$_COOKIE['test']) попробоватьif(!$test)
SAD пишет:
ИМХО а что с нее взять
Но лиса не реагирует на эту проверку
14. SAD - 07 Февраля, 2010 - 14:28:59 - перейти к сообщению
JustUserR пишет:
Кстати существует еще одно интересное решение которое работает вообще без cookie и сохраняет информацию в других истоиниках - к примеру в query-строке URL-адреса и не дает его изменять
А можно поподробнее? )
15. JustUserR - 07 Февраля, 2010 - 14:52:39 - перейти к сообщению
SAD пишет:
Можно В общем суть заключается в том что необходимо работать напрямую с window.location и соответственно query-строкой в нем - и каждый раз по событию onunload сохрянять туда свою инфорацию - и если пользователь решить подменить URL-адрес и данные в нем то страница начнет перезагрухаться и сработает установленное нами событие и в query-строку запишутся наши данные а не то что хотел ввести пользователь - но это работает только против перезагрузки страница а не против выхода где решениям являются cookie Также здесь надо проверять referer чтобы пользователь изначально не ввел в query-строку свои данные
А можно поподробнее? )