PHP с таймером JavaScript - что происходит, когда пользователь покидает страницу до того, как таймер станет нулевым - PullRequest
1 голос
/ 10 ноября 2010

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

Я сделал это с помощью php, а счетчик в javascript. JavaScript сделает перенаправление, когда время = 0

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

Большое спасибо

Ответы [ 4 ]

4 голосов
/ 10 ноября 2010

Вы не можете быть уверены - ваши пользователи могут легко изменить ваш JavaScript, чтобы увеличить ограничение по времени или даже полностью отключить таймер.

Ограничение по времени должно быть подтверждено на сервере. Я хотел бы предложить, чтобы при запуске ограничения по времени сервер сохранял в базе данных строку, в которой указывалось, каким пользователем он является и когда началось ограничение по времени. Когда пользователь отправляет запрос, сервер должен проверить базу данных, чтобы узнать, сколько времени прошло.

Я также думаю, что заполнить ваш адрес всего за 60 секунд довольно сурово, но это ваше решение.

0 голосов
/ 10 ноября 2010

старайтесь не доверять только javascript для этой работы, используйте php для записи времени в сеансе или базе данных, когда пользователь получает форму для заполнения своих данных - проверьте разницу (с php) между этим временем запуска ивремя окончания, когда пользователь отправляет форму на сервер и показывает ему подтверждение, когда diff <= 1 мин, или показывает ему извинения за опоздание, когда diff> 1 мин

0 голосов
/ 10 ноября 2010

Если вы сделаете это в Javascript, любой может прочитать ваш сценарий и найти, где находится призовая страница.

Вместо этого запустите ваш таймер с PHP, используя microtime () .Вы можете начать, когда они увидят страницу «Вы выиграли».Он будет работать в фоновом режиме и не будет зависеть от взаимодействия с пользователем.

0 голосов
/ 10 ноября 2010

вы могли бы сделать это, используя javascript для пользовательского интерфейса, и когда пользователь оставляет поле, выполните ajax-вызов php-скрипта и сохраните данные, которые он только что ввел в поле.И реальный счет делает в php, поэтому, когда пользователь отправляет окончательные данные, вы должны также проверить, истекло ли время в php.

Я думаю, что это хорошее решение для вашей проблемы.

...