Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] licznik z cookie
Forum PHP.pl > Forum > Przedszkole
cythrus
witam... szybka pilka:

czy $visited!=1 bedzie kiedykolwiek spelnione, skoro jest ustawiane przy
kazdym odswiezeniu strony? jest możliwe, że wskaźnik się nie zwiększy mimo,
że cookie zostanie usunięty?

-------------------------
  1. <?
  2. setcookie("visited", "1", time()+3600*3);
  3. /* 3 godzinny cookie */
  4. ?>
  5.  
  6. <HTML>
  7. <BODY>
  8. <?
  9. if(file_exists("licznik.n"))
  10. {
  11. $file=fopen("licznik.n", "r");
  12.  
  13. flock($file, 1);
  14. $ile=fgets($file, 100); /* odczytuje $ile */
  15. flock($file, 3);
  16.  
  17. fclose($file);
  18.  
  19. if($visited!="1") /* tutaj mam problem */
  20. {
  21. $ile++; /* zwiększa $ile, NIE $visited */
  22. }
  23. }
  24.  
  25. else
  26. {
  27. $ile=1; /* jeśli plik nie istnieje, wpisze do pliku 1 */
  28. }
  29.  
  30. $file=fopen("licznik.n", "w"); /* otwiera plik do zapisu */
  31.  
  32. flock($file, 2);
  33. fwrite($file, $ile); /* zapisuje $ile do pliku */
  34. flock($file, 3);
  35. fclose($file);
  36.  
  37. echo($ile);
  38. ?>
  39. </BODY>
  40. </HTML>


poprawiam
---
nospor


-------------------------
nospor
  1. <?php
  2. if(!isset($_COOKIE['visited'])){....}
  3. ?>
hwao
Jezeli user ma wylaczone cookie to moze tak byc, tak samo chyba za 1 requestem do strony poniewaz ciasteczko jest wyslane do uztykownika i dopieor przy nastepnym zadaniu bedzie widoczne.

Nie lapie za bardzo o co Ci dokładnie chodzi...

  1. <?php
  2.  
  3. /**
  4.  * Licznik
  5.  * 
  6.  * @author hwao
  7.  *
  8.  * @param string $sFile - sciezka do pliku bazy
  9.  * @param bool $bUseCookie - czy uzywac cookie (kontrola przed udswiezaniem)
  10.  * @param integer $iTime - czas aktywnosci ciastka
  11.  * 
  12.  * @return bool
  13.  */
  14. function Counter( $sFile, $bUseCookie = false , $iTime = 3600 ) {
  15. if( array_key_exists( '__counter', $_COOKIE ) && $bUseCookie ) {
  16. // Uzytkownik juz by│, wiec jego nie liczymy
  17. return false;
  18. }
  19.  
  20. if( !file_exists( $sFile ) ) {
  21. // baza danych nie istnieje
  22. die( '<h4>Licznik : baza danych pod sciezka '.$sFile.' nie istnieje!' );
  23. }
  24.  
  25. $aCounter = file( $sFile );
  26. $iCount = (int)$aCounter[0];
  27. $iCount++;
  28.  
  29. // Wyslanie Cookie
  30. if( $bUseCookie ) {
  31. setcookie( '__counter', $iCount, time()+$iTime );
  32. }
  33.  
  34.  
  35. /**
  36.  * Zapis licznika
  37.  */
  38.  
  39. $rFo = fopen( $sFile, 'w+' );
  40. flock( $rFo, LOCK_EX );
  41. fwrite( $rFo, $iCount );
  42. flock( $rFo, LOCK_UN );
  43. fclose( $rFo );
  44. return true;
  45.  
  46. }
  47.  
  48. /**
  49.  * Wyglad licznika
  50.  *
  51.  * @param string $sFile
  52.  * @return string
  53.  */
  54. function CounterReader( $sFile ) {
  55. $aCounter = file( $sFile );
  56. $iCount = (int)$aCounter[0];
  57.  
  58. return 'Odwiedzin: '.$iCount.'<br />';
  59. }
  60.  
  61. $sFile = './counter.db';
  62.  
  63.  
  64. Counter( $sFile, false );
  65. echo CounterReader( $sFile );
  66. ?>


Potrzebny jest plik counter.db
cythrus
dzięki nospor, hwao smile.gif

mase ciekawych "standardow zapisu" w tych kodach...

ja narazie tylko kilka starych tutoriali przeczytalem, ale widze, ze duzo lepiej jest skrypty ogladac i uczyc sie roznych kruczkow od innych...

powesze s-e tu, buziak tongue.gif
cythrus
...no i przepraszam za niesforne zachowanie, no... sie nie powtorzy...
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.