PHP+JS Odliczanie czasu do wydarzenia


(system) #1

Chciałem zrobić skrypt który pobiera czas serwera i odlicza w dół. Napisałem taki skrypt:

<?


$now = time();

$sylwester = mktime(23, 59, 59, 12, 31);

$pozostalo = $sylwester - $now;daty


echo "\n";

?>

Krótki opis:

Pobieram czas serwera, obliczam ile brakuje sekund do zdarzenia i przekazuje do js. Chcę żeby licznik wyświetlał brakujący czas oraz żeby co 1 sekundę zmienna 'sek' traciła 1 wartość/sekundę. Próbowałem to robić na pętli, ale na całą stronę wywaliło mi tekst, kóry leciał w (prawie) nieskończoność.

Problem:

Jak to wyświetlic/napisac w javascript ?


(mario@) #2

Tylko że do tego nie potrzeba php samo js "da sobie radę" - javascript-odliczajacy-czas-stronie-t427646.html (w necie takich skryptów znajdziesz od groma). Ogólnie zamiast pętli w js powinieneś wywoływać jakąś funkcję co 1000[ms].


(system) #3

Tylko jestem cienki w javascript. Przy czym ja chcę czas serwera, a nie użytkownika.


(Ddiabelekk) #4

Tu masz artykuł jak odliczyć czas do zdarzenia


(system) #5

Dzięki:) Poczytam.


(pain3hp) #6

Przy okazji chciałem dodać że wydaje mi sie ze to nie jest zbytnio bezpieczne bo taki kod user może sobie chyba zmienić czyli zmniejszyć czas, więc PHP chyba powinno też stać z tyłu i to kontrolować? A macie jakiś sposób żeby działało PHP a ajax odświeżał skrypt, efekt by był ten sam chyba a użytkownik by nie miał możliwości skrócenia czasu..


(system) #7
<?

$now = time();

$sylwester = mktime(23, 59, 59, 12, 31);

$pozostalo = $sylwester - $now;


echo "\n";


?>

Napisałem coś lecz skrypt nie działa (nie odświeża się) :? Czy ktoś pomoże mi znaleść błąd i go rozwiązać ??


(Ddiabelekk) #8

pain3hp , to co pokazuje javascript nawet jak zmieni user to nie zmieni nic w bazie danych, dopóty dopóki nie zezwolisz tego sam. Dajmy na to, że gdy czas się wyzeruje to przesyłasz kogoś przy pomocy AJAX do pliku .php, który sprawdza czy timestamp - time() jest większy od zera, reagujesz odpowiednio i masz już wszystko elegancko zabezpieczone.

Jeśli miałbyś co sekundę wysyłać taką informację do serwera to byś go za bardzo obciążył, gdybyś miał duży ruch na stronie.


(pain3hp) #9
  1. użytkownik wchodzi i pobiera czas do końca

  2. czas jest wczytany do js i wyświetla sie na stronie stoper

  3. po zakończeniu uruchamia się skrypt ale nie wywołany przez js tylko przez cron

tak jest chyba najbezpieczniej


(Ddiabelekk) #10

pain3hp , nie, bo w taki właśnie sposób, ktoś może podmienić to co jest widoczne i dostępne po jego stronie, czyli po stronie przeglądarki, wszystkie testy musisz wykonywać ZAWSZE ponownie po stronie serwera, no chyba że programujesz w stylu ryzyk fizyk ^^