konto usunięte

Temat: odliczanie czasu w js, czas z serwera.

Witam, przerobiłem trochę znaleziony w sieci skrypt do odliczania ile czasu pozostało do określonej daty. Obecnie czas odliczany jest na podstawie czasu ustawionego na komputerze użytkownika. Proszę o jakieś podpowiedzi aby czas był porównywany z czasem serwera. Nie chciałbym co sekundę sprawdzać czasu za pomocą ajaxa.


<script type="text/javascript">
function CD(d,o,t,x){return[x=~~(t=(d-o)/864e5),x=~~(t=(t-x)*24), x=~~(t=(t-x)*60),~~((t-x)*60)]}
function R(t){
t=CD(new Date(<?=$this->y?>,<?=$this->m?>,<?=$this->d?>,<?=$this->h?>,<?=$this->mi?>,<?=$this->s?>), new Date());


if(t[0] < 10 && t[0] >= 0 )
t[0]='0'+ t[0];
if(t[1] < 10 && t[1] >= 0)
t[1]='0'+ t[1];
if(t[2] < 10 && t[2] >= 0)
t[2]='0'+ t[2];
if(t[3] < 10 && t[3] >= 0)
t[3]='0'+ t[3];

document.getElementById('dni').innerHTML=t[0];
document.getElementById('godziny').innerHTML=t[1];
document.getElementById('minuty').innerHTML=t[2];
document.getElementById('sekundy').innerHTML=t[3];

if (t[3]<0)
{
document.getElementById('dni').innerHTML='00';
document.getElementById('godziny').innerHTML='00';
document.getElementById('minuty').innerHTML='00';
document.getElementById('sekundy').innerHTML='00';
}
else setTimeout('R()',1e3);
}
onload=function(){R();}

</script>


ja widzę 2 rozwiązania:
1. olać to, jest to tylko informacja dla użytkownika. Po upływie czasu nie ma możliwości zakupu przedmiotu. Przy wyświetlaniu oraz zakupie przedmiotów, po stronie serwera sprawdzane jest czy przedmiot jest nadal aktywny, na podstawie czasu z php.

2. Policzyć w php ile jeszcze sekund zostało miedzy końncem a datą teraźniejszą. Co sekundę odejmować od tej liczby 1. Potem sekundy zamienić na ilość dni, godzin, minut i sekund. Czy to jest możliwe, i byłoby dokładne?

Dodam jeszcze, że jeśli chodzi o moje umiejętności js, to jest bardzo słabo :) czasami przerobię jakiegoś gotowca.

Pozdrawiam i z góry dziękuję!

konto usunięte

Temat: odliczanie czasu w js, czas z serwera.

Możesz w momencie renderowania stronki wraz z kodem HTML przesłać datę i godzinę, w JS pobrać uzyskaną i wartość i przemielić ją chociazby funkcją, którą już masz.

konto usunięte

Temat: odliczanie czasu w js, czas z serwera.

Dokladnie to co Sebastian bym zaoferowal, w momencie generowania strony przekazac aktualny czas z backendu do frontendu i zapewnic sobie obsluge wyliczania w JS.

Dodatkowo oczywiscie na serwerze zabezpieczenie, aby ktos 'przypadkiem' nie zatwierdzil zakupu po czasie.
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: odliczanie czasu w js, czas z serwera.

Jeżeli zależy Ci na dużej dokładności, to wysyłanie czasu przez php nie jest najlepszym rozwiązaniem, bo zanim strona się "prześle", zanim przeglądarka ją wyrenderuje, zanim się odpali JS... lepiej będzie po starcie Twoich skryptów zrobić synchronizację ajaxem.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: odliczanie czasu w js, czas z serwera.

Można by też użyć web sockets, żeby podtrzymać połączenie z serwerem i synchronizować się co jakiś czas.

konto usunięte

Temat: odliczanie czasu w js, czas z serwera.

Na bardzo dużej dokładności mi nie zależy więc wystarczy, że przekażę czas z php na początku. Tylko w którym miejscu :D?


t=CD(new Date(<?=$this->y?>,<?=$this->m?>,<?=$this->d?>,<?=$this->h?>,<?=$this->mi?>,<?=$this->s?>), [b]new Date()[/b]);


Jeśli wstawię datę z php w to miejsce to licznik nie działa. Domyslam się, że przy każdym przejściu przez ten kod sprawdzana jest dana, ta z php się nie zmieni bez przeładowania strony a więc i licznik nie zmienia wskazania.

Następna dyskusja:

POTRZEBUJESZ TANIEGO SERWER...




Wyślij zaproszenie do