Witam

Do tej pory nie miałem styczności z ciastkami.

Mam opartą stronę na "includach", załóżmy, że to jaka strona jest wyświetlana jest w zmiennej $page.

Chiałbym teraz zrobić coś takiego:
- jeśli użytkownik był w ciągu ostatnich 150 dni na stronie, wyświetla mu się strona z aktualnościami (poprzez ustawienie zmiennej $page), a jeśli nie był nigdy lub był ponad 150 dni temu wyświetla mu się strona główna
- jeśli użytkownik był na stronie w ostatniej dobie zegarowej, to licznik odwiedzin się nie będzie zwiększał, a jeśli nie był, licznik musi zostać zwiększony. Czyli inaczej, jeśli był o godzinie 23.59 a później o 00.01 to to drugie wejście ma zostać policzone na poczet nowego dnia, ale następne wejście zostanie policzone dopiero kolejnego dnia.

Mam nadzieję, że udało mi się wyjaśnić, co bym chciał, aby skrypt robił.



Poniżej przedstawiam kod, który napisałem - ale bardzo bym chciał, żeby kilka z Was go sprawdziło, żebym wiedział, że to działa, bo jak już wspomniałem, nie miałem do tej pory kontaktu z ciastkami:

  1. <?php
  2.  
  3. function dayTime()
  4. {
  5. $now=time();
  6. $dzisiaj=getdate();
  7. $godzina=$dzisiaj[&#092;"hours\"];
  8. $minuta=$dzisiaj[&#092;"minutes\"];
  9. $sekunda=$dzisiaj[&#092;"seconds\"];
  10.  
  11. $roznica=(23-$godzina)*60*60+(59-$minuta)*60+60-$sekunda;  
  12. return $now+$roznica;
  13. }
  14.  
  15.  
  16. if (isset($_COOKIE[&#092;"liczOdw\"]))
  17. {
  18. if (!isset($_REQUEST[&#092;"page\"]))
  19. $page=&#092;"aktualnosci\";
  20.  
  21. $wartosc=$_COOKIE[&#092;"liczOdw\"];
  22. if ($wartosc>time())
  23. {
  24. // nie zwiekszamy licznika - nic nie robimy
  25. }
  26. else
  27. {
  28. // osoba juz tu byla, ale w zeszlej dobie lub wczesniej - zwiekszamy licznik
  29. setCookie('liczOdw',dayTime(),time()+60*60*24*150); //\"odswiezamy\" ciastko
  30. }
  31. }
  32. else
  33. {
  34. if (!isset($_REQUEST[&#092;"page\"]))
  35. $page=&#092;"glowna\";
  36. setCookie('liczOdw', dayTime(),time()+60*60*24*300);
  37.  
  38. // wiemy ze to \"nowa osoba\" - zwiekszamy licznik
  39. }
  40. ?>


Dodatkowo mam pytanie - czy mogę nie kasować wcześniejszego ciastka i po prostu "nadpisywać" na nie nowe - tak się właśnie (chyba) robi w tym skrypcie.

Oprócz tego znalazłem na jednej ze stron, a mianowicie http://www.antylameriada.net/index.php?s=wlicznik taki skrypt, w którym stosuje się oprócz sprawdzania, czy ciastko jest ustawione, dodatkowo $_SERVER['HTTP_REFERER'] - nie do końca rozumiem, czemu to jest zastosowane i co by było gdyby tego nie użyć.

W myśl tej idei, w moim skrypcie trzeba by zamienić:

  1. <?php
  2. if (isset($_COOKIE[&#092;"liczOdw\"]))
  3. ?>

na
  1. <?php
  2. if (isset($_COOKIE[&#092;"liczOdw\"]) && (!strstr($_SERVER['HTTP_REFERER'], $adres)))
  3. ?>

gdzie $adres to adres mojej strony bez http i w w w.

Czy Wy też coś takiego stosujecie?

Pozdrawiam i czekam na pomoc w tych kwestiach