Licznik odwiedzin stron PHP

Witam :wink:

Potrzebuje bardzo prostego skryptu do liczenia odwiedzin stron :wink:

ponieważ znalazłem jeden długi … a potrzebuje krótszego… :wink:

<?php

// $ip=$_SERVER['REMOTE_ADDR'];

$moj_adres="83.83.255.255";

function polnoc()

{

   $teraz = date("H:i:s");

   $czas = explode(":", $teraz);

   $godziny = 23-$czas[0];

   $minuty = 59-$czas[1];

   $sekundy = 59-$czas[2];

   $waznosc = $godziny*3600 + $minuty*60 + $sekundy;

   return $waznosc;

}

     if((!isset($_COOKIE['licznik'])) && ($ip != $moj_adres))

        {


                $plik = fopen("licznik.txt", "r");

                $tekst = fread($plik, filesize("licznik.txt"));

                $dane = explode(";", $tekst);

                fclose($plik);

                $plik = fopen("licznik.txt", "w");

                flock($plik, 2);

                $dane[0]++;

                fwrite($plik, "$dane[0];", 15);

                flock($plik, 3);

                fclose($plik);


        $data = date("Y-m-d");

        $dzienny=fopen("dzienny.txt","r");

        $dzienny_tekst =fread($dzienny, filesize("dzienny.txt"));

        $dane2 = explode(":", $dzienny_tekst);

        fclose($dzienny);

        if($dane2[0]==$data)

      { $dane2[1]++;

                $dzienny=fopen("dzienny.txt","w");

                flock($dzienny, 2);

                fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30);

          flock($dzienny, 3);

          fclose($dzienny);

        }

        else

        { $dane2[2]=$dane2[0];

          $dane2[3]=$dane2[1];

          $dane2[0]=$data;

          $dane2[1]=1;

          $dzienny=fopen("dzienny.txt","w");

          flock($dzienny, 2);

          fwrite($dzienny, "$dane2[0]:$dane2[1]:$dane2[2]:$dane2[3]", 30);

          flock($dzienny, 3);

          fclose($dzienny);

        }


          setcookie("licznik", "zliczono", time()+polnoc()+1 );

        }else{


                $plik = fopen("licznik.txt", "r");

                $tekst = fread($plik, filesize("licznik.txt"));

                $dane = explode(";", $tekst);

                fclose($plik);


                $dzienny=fopen("dzienny.txt","r");

                $dzienny_tekst =fread($dzienny, filesize("dzienny.txt"));

                $dane2 = explode(":", $dzienny_tekst);

                fclose($dzienny);


   }

   define('FILE_NAME','line.php');

   function gsf_minutes($minutes)

   {

      return 60 * $minutes;

   } #end function gsf_minutes()


   function gsf_hours($hours)

   {

      return 3600 * $hours;

   } #end function gsf_hours()

   function gsf_days($days)

   {

      return 86400 * $days;

   } #end function gsf_days()

   function visitors()

   {

      global $online2;

      $online = count($online2);

      if($online == 0)

         return 1;

      else

         return $online;

   } #end function visitors()


   if(file_exists(FILE_NAME))

   {

      $online = file(FILE_NAME);

      foreach($online as $on)

      {

         $part = explode("\t",$on);

         $online2[rtrim($part[0])] = $part[1];

      }

      unset($online2[$_SERVER['REMOTE_ADDR']]);

      $online2[$_SERVER['REMOTE_ADDR']] = time();

      foreach(array_keys($online2) as $on)

      {

         if($online2[$on] < (time() - gsf_minutes('5')))

            unset($online2[$on]);                       

         else                                         

            $file_ .= "$on \t $online2[$on] \n";         

      }

   }

   else                                               

   {

      $file_ = $_SERVER['REMOTE_ADDR']."\t".time()."\n";

   }

   $file = fopen(FILE_NAME,'w');

   flock($file, LOCK_EX);       

   fwrite($file,$file_);       

   flock($file, LOCK_UN);       

   fclose($file);


?>


Łącznie :<?php echo($dane[0]); ?> 


Dzisiaj :(<?php echo($dane2[0]); ?>) : <?php echo($dane2[1]); ?>


Wczoraj :(<?php echo($dane2[2]); ?>) : <?php echo($dane2[3]); ?>


online: <? echo visitors(); ?>

Złączono Posta _: 22.11.2007 (Czw) 12:57_Dobra znalazłem krótszy… :wink: teraz mam problem ze zrobieniem z wyświetlaniu ilości mam cały czas tylko 1 odwiedzine…

<?

$cookie++;

setcookie("cookie");

printf ("Liczba odwiedzin strony to: $cookie");

?>

Na cookiesach nie radze utrzymywać liczby odwiedzin. Lepiej zrób to na pliku.

Przykładowy kod:

<?php

$file=fopen('licznik.dat', 'w+');

$licznik=fread($file, filesize('licznik.dat'));

$licznik = intval($licznik);

$licznik++;

ftruncate($file, 0);

fseek($file, 0);

fwrite($file, strval($licznik));

fclose($file);

echo "Stronę odwiedzono $licznik razy.";

?>

Możliwe, że są błędy :wink:

Fiołek dzięki … ale ja potrzebuje w cookies… :evil:

Zależy co przez to rozumiesz.

Jeśli mierzyć czas i liczbę podstron, które dany użytkownik przejrzał - ujdzie.

Jednak nie ma możliwości zrobić globalnego licznika, opartego wyłącznie na ciasteczkach.

Dlaczego? Otóż masz stronę - ja wejdę i zapisze mi, że odwiedziłem stronę, teraz wejdzie ktoś inny - jemu również, ale mojego wejścia pod uwagę nie weźmie w ogóle.

Jak ktoś nie ma obsługi cookies?

Co więc z takiego licznika?!

Już lepiej bazując na sesjach uaktualniać wpis w pliku tekstowym/bazie danych.

L337 Crew dostalismy od nauczyciela za zadanie znaleść dobry

skrypt który liczy liczbe odwiedzin na stronie za pomocą ciasteczek… a

przede wszystkim ma być on krótki…

Wpisz w google: skrypty liczników. Napewno znajdziesz.