Licznik - pytanie

pakot

Avatar: pakot

2010-05-19 22:09

W jaki sposób wstawić ten licznik na stronę np. w miejsce pod #menu4

http://www.int24.com.pl/skrypty_php/licznik.php

Z góry dziękuję za pomoc.

» Quick.Cms v2.x

Kobejasi

Avatar: Kobejasi

2010-05-19 23:07

Tak na szybko troszkę zmieniłem ten skrypt, żeby dał się łatwiej zaadoptować w Q.CMS.

1. edytuj plik core/common.php i dodaj poniższy kod:


function counter( ){
    
ob_start();
    
// ========== Funkcje ==========
    
function open($name="",$trybe="r",$value="0")
            {
    if(
file_exists($name))
        {
    
$file=fopen($name$trybe);
    
flock($file1);
    if (
filesize($name)>0) return fread(fopen($name$trybe), filesize($name)); else return $value;
    
flock($file3);
    
fclose($file);
        }
            }
    function 
save($name="",$date="",$trybe="w")
        {
    if(
file_exists($name))
            {
    
$file=fopen($name$trybe);
    
flock($file2);
    
fwrite($file$date);
    
flock($file3);
    
fclose($file);
            }
        }
    
// =========== Ścieżki ==========
    
$scr[0] = "db/ip.dat";
    
$scr[1] = "db/dane.dat";
    
$scr[2] = "db/log.dat";
    
// ========== Zmienne ==========
    
$aktu_ip $_SERVER['REMOTE_ADDR'];
    
$host gethostbyaddr($aktu_ip);
    
$aktu_czas = (date(G)*3600)+(date(i)*60)+date(s);      //date(G)*60+date(i); 3600 = 1h;
    
$czas_online 600;      // (10 minut) = 600 sekund
    
$czas_opuznienia 900;      // (15 minut) = 900 sekund
    
$data date("Y-m-d"time());
    
$online 1;
    
$zmienna False;
    
$nowe_dane '';
    
// =========== Źródło ==========
    
$dane explode(chr(1),open($scr[1]));
    if(!
strcmp($dane[2],$data))
    {
    
$tab1 explode(chr(1), open($scr[0]));
    for( 
$x 0$x <= count($tab1)-2$x+=)
    {
    if(!
strcmp($aktu_ip$tab1[$x]))
            {
    if(
$aktu_czas $czas_opuznienia $tab1[$x+1]) $zmienna=True;
            }
      else
            {
    if(
$aktu_czas $czas_opuznienia $tab1[$x+1])
                    {
    
$nowe_dane .= $tab1[$x].chr(1).$tab1[$x+1].chr(1);
    if(
$aktu_czas $czas_online $tab1[$x+1]) $online++;
                    }
    }
           }
    if (
$zmienna == 0)
           {
    
$dane[0]++;
    
$dane[1]++;
    
save($scr[1],$dane[0].chr(1).$dane[1].chr(1).$dane[2]);
    
$wszystko "$dane[0] -".chr(1). "- $dane[1] -" .chr(1). "- $online -" .chr(1). date("- Y-m-d -" .chr(1). "- G:i:s -"time()) .chr(1). "- $aktu_ip -" .chr(1). "- $host -" .chr(1). $HTTP_REFERER .chr(1). $HTTP_USER_AGENT .chr(13).chr(10);
    
save($scr[2],$wszystko,"a");
           }
        }
    else
        {
    
save($scr[0]);
    
$dane[0]++;
    
$dane[1] = 1;
    
save($scr[1],$dane[0].chr(1).$dane[1].chr(1).$data);
    
$wszystko "$dane[0] -".chr(1). "- $dane[1] -" .chr(1). "- $online -" .chr(1). date("- Y-m-d -" .chr(1). "- G:i:s -"time()) .chr(1). "- $aktu_ip -" .chr(1). "- $host -" .chr(1). $HTTP_REFERER .chr(1). $HTTP_USER_AGENT .chr(13).chr(10);
    
save($scr[2],$wszystko,"a");
        }
    
$nowe_dane .= $aktu_ip.chr(1).$aktu_czas.chr(1);
    
save($scr[0],$nowe_dane);
    
$output_counter "<font color=\"blue\">odwiedzin: </font><font color=#ADCAFF><b>$dane[0]</b></font><br>";
    
$output_counter .= "<font color=\"blue\">dzisiaj: </font><font color=#ADCAFF><b>$dane[1]</b></font><br>";
    
$output_counter .= "<font color=\"blue\">on-line: </font><font color=#ADCAFF><b>$online</b></font><br>";

    
// LICZNIK POWSTANIA STRONY
    //przekształcamy datę w przeszłości do formatu unix'owego
    
$data strtotime("2008-11-25 0:00:30");    //tu wpisz datę od kiedy ma liczyć
    //pobieramy bieżący czas
    
$teraz time();
    
//różnice dzielimy przez jeden dzień czyli 60 s. * 60 m. * 24 godz.
    
$dni_r = ($teraz $data) / (60 60 24);
    
//część całkowita z dzielenia to liczba dni
    
$dni_c floor($dni_r);
    
//resztę z dzielenia mnożymy przez dobę
    
$godzin_r = ($dni_r $dni_c) * 24;
    
//część całkowita z mnożenia to liczba godzin
    
$godzin_c floor($godzin_r);
    
//resztę mnożymy przez godzinę
    
$minut_r = ($godzin_r $godzin_c) * 60;
    
//część całkowita to liczba minut
    
$minut_c floor($minut_r);
    
//część całkowita reszty pomnożonej przez minutę to liczba sekund
    
$sekund_c floor(($minut_r $minut_c) * 60);
    
$output_counter .= "<font color=\"blue\">strona istnieje: </font><font color=#ADCAFF><b>$dni_c</b></font><font color=\"blue\"> dni</font><br>";

    
// LICZNIK GENEROWANIA STRONY
    
$output_counter .= "<font color=\"blue\">ładowanie: </font>";
    
$output_counter .= "<font color=#ADCAFF><b>";
    
$output_counter .= round(microtime()-$start3);
    
$output_counter .= "</b></font><font color=\"blue\"> sek</font>";
    
    return 
$output_counter;
//end counter



2. utwórz pliki &#8220;log.dat", "ip.dat", "dane.dat&#8221; w katalogu &#8220;db/&#8221; i nadaj im prawa do zapisu, chmod 777

3. edytuj plik &#8220;index.php&#8221; i znajdź kod:

ob_start'changeCharset' );[/php]

4. wstaw za nim kod
[
php]
$start=microtime(); 
$iCounter counter( ); 
[/
php]

5. wtaw zmienną $iCounter gdzieś do kodu HTML np. do pliku templates/container.tpl do bloku BODY

np
pod menu4

[php]
      <
div id="column">
        
$sMenu3
        $sMenu4
        $iCounter
      
</div>



Oczywiście robiłem to tak na szybko, więc trzeba tutaj jeszcze dodać style, żeby to jakoś ładnie dopasować do szablonu.

Generalnie to najlepiej byłoby dorobić plik .tpl ;-) i wyrzucić z funkcji kod HTML ;-)

http://www.walendowski.com

pakot

Avatar: pakot

2010-05-21 07:58

Działa w 100% :)

Dziękuję i pozdrawiam.

Do góry
o nas | kontakt