Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]time()
Forum PHP.pl > Forum > Przedszkole
fate
Czy mozna jakos ustawic zeby funkcja time() korzystala z zegara na serwerze a nie po stronie uzytkownika? chodzi o to zeby przestawienie czasu nie powodowalo bledow w moich skryptach np antyflood..
moze jakies inne rozwiazanie? nerdsmiley.png
b4rt3kk
Przecież to jest czas serwera, a nie użytkownika, no chyba że skrypt odpalasz na localhost, wtedy jedno pokrywa się z drugim.
fate
witam no niestety sprawdzilem time() na serwerze zewnetrznym i zmiana czasu na kompie pozwalala mi na floodzik
funkcja date() korzysta z czasu na serwerze i moglbym ja wpasowac ale sprobuje zastosowac $_SERVER['REQUEST_TIME'] na localtime jest za glupi albo za leniwy bo nie obczailem wstydnis.gif

CuteOne
Niemożliwe.... time() zwaraca czas serwera(Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)) i komp użytkownika ma do niego tyle co ja do Kaczyńskiego
!*!
Cytat(fate @ 19.11.2012, 12:20:29 ) *
witam no niestety sprawdzilem time() na serwerze zewnetrznym i zmiana czasu na kompie pozwalala mi na floodzik

Ciekawe jakim sposobem, skoro time() działa po stronie serwera. Pokaż kod.
fate
Zawrzało widzę, więc trzeba to wyjaśnić:

kodzik jest prosty:
  1. $cooks = time();
  2. setcookie ('antyflood', $cooks, time()+30);

a zaraz potym to ale raczej bez znaczenia:
  1. $czas = date("Y/m/d H:i:s");
  2.  
  3. $htap = file($path);
  4. $id = count($htap);
  5. $addnew = '<div class="feedback"><p id="'.--$n.++$id.'">'.$autor.' '.$_SERVER['REMOTE_ADDR'].'<br />'.$czas.'<br />'.$tresc.'</p></div>'."\r\n";
  6. ++$n;
  7. $add = fopen($path, 'a+');
  8. flock($add, 2);
  9. fseek($add, 0);
  10. fwrite($add, $addnew);
  11. flock($add, 3);
  12. fclose($add);


na koniec
  1. else {
  2. $tajm = time()-30;
  3. $timeleft = $_COOKIE['antyflood'] - $tajm;
  4. echo 'Moşliwość dodawania kolejnych komentarzy zostanie odblokowana za <strong>'.$timeleft.'</strong> sekund.';}


wiem ze troche spaghetti ten kod

dodam ze na serwie ustawiony jest date_default_timezone_set ale chyba to bez znaczenia

http://naoq.pl/index.php?show=view&art...055253&id=6

ostatnie 2 komentarze dodano w odstepie 12 sekund (w trakcie ktorych zmienilem date i godzine w przod na WINDOWS7):
Gość 84.40.247.50
2012/11/19 12:14:55
fgfghfghvfv fgfh fg hf fg hfg hfgh fghf

Gość 84.40.247.50
2012/11/19 12:15:07
fgfghfghvfv fgfh fg hf fg hfg hfgh fghf

data i godzina zapiswyana jest z funkcji date()

Może ktoś wytłumaczy, co nie zmienia faktów moich zamiarów przeróbek i tak
!*!
  1. $config['antyflood']['time'] = 10;
  2.  
  3. $time = date('Y/m/d H:i:s');
  4. $text = 'blebleble '.$time.'fooo'."\r\n";
  5.  
  6. if(isset($_COOKIE['send_message']))
  7. {
  8. echo 'odczekaj '.$config['antyflood']['time'].' sekund';
  9. }
  10. else
  11. {
  12. echo 'wiadomość wysłana';
  13. setcookie('send_message', 'foo', time() + $config['antyflood']['time']);
  14. file_put_contents('./file.txt', $text, FILE_APPEND | LOCK_EX);
  15. }


Tu nie ma wielkiej filozofii.
b4rt3kk
To nie ma żadnego związku z date, tylko z czasem żywotności ciasteczka. A więc wszystko odbywa się po stronie przeglądarki. O ile przestawiasz tą datę? A na ile ustawiłeś ciasteczko?
fate
czas zywotności time() + 30 sekund (chyba powinienem tu uzyc czasu z zapisanej wczesniej zmiennej) i blad mysle ze znikne sprawdze pozniej

data 4 dni do przodu godzina kilkanascie minut do przodu

!*! mam tam podobnie tak jak to pokazales ale wplatane jest w to mnostwo innego kodu dlatego pokazalem tylko czesci
CuteOne
  1.  
  2.  
  3. $time = time();
  4.  
  5. if(isset($_SESSION['lastActive'])) {
  6.  
  7. if($_SESSION['lastActive'] + 30 > $time) {
  8.  
  9. // dodaj post
  10. $_SESSION['lastActive'] = $time;
  11. }
  12. else {
  13.  
  14. // nie dodawaj
  15. }
  16. }
  17. else {
  18.  
  19. // dodaj post
  20. $_SESSION['lastActive'] = $time;
  21. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.