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