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 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 ( $file , 1 ); if ( filesize ( $name )> 0 ) return fread ( fopen ( $name , $trybe ), filesize ( $name )); else return $value ; flock ( $file , 3 ); fclose ( $file ); } } function save ( $name = "" , $date = "" , $trybe = "w" ) { if( file_exists ( $name )) { $file = fopen ( $name , $trybe ); flock ( $file , 2 ); fwrite ( $file , $date ); flock ( $file , 3 ); 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 += 2 ) { 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 ()- $start , 3 ); $output_counter .= "</b></font><font color=\" blue \ "> sek</font>" ; return $output_counter ; } //end counter
2. utwórz pliki “log.dat", "ip.dat", "dane.dat” w katalogu “db/” i nadaj im prawa do zapisu, chmod 777 3. edytuj plik “index.php” 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 2010-05-21 07:58
Działa w 100% :) Dziękuję i pozdrawiam.