LIcznik odwiedzin i licznik osób online przebywających aktualnie na stronie

euphoria-art

Avatar: euphoria-art

2010-09-15 15:41

Hej, Jak zrobić licznik odwiedzin i licznik osób online przebywających aktualnie na stronie? znalazłem jakieś stare posty dotyczące licznika odwiedzin ale jest to jakaś lipa dotycząca starej wersji sklepu, dlatego zaczynam nowego posta, Chciałbym ten licznik w menu po prawej pod kategoriami i producentami - jeden licznik zawierający osoby online i odwiedziny, proszę o wskazówki dla początkujących ;)

» Quick.Cart v3.x

http://www.obrazygaleria.pl

euphoria-art

Avatar: euphoria-art

2010-10-08 10:23

ponawiam posta gdyż nie uzyskałem odpowiedzi

http://www.obrazygaleria.pl

strzmiele

Avatar: strzmiele

2010-10-09 12:46

To slabo szukasz - apropos licznika bylo duzo, sam to zrobilem wg forum i dziala...

euphoria-art

Avatar: euphoria-art

2010-10-09 15:46

Strzmiele do jakiej wersji sklepu go zastosowałeś?, na forum jest jakaś lipa na starą wersję sklepu, w nowej jest zupełnie co innego, chodzi mi jeszcze licznik osób aktualnie przebywających na stronie, jak znalazłeś to na forum to prosił bym o linka

http://www.obrazygaleria.pl

Cinek.ck

Avatar: Cinek.ck

2010-10-09 19:39

Jak chcesz to możesz skorzystać np. z tego http://www.int24.com.pl/php-script/counter-visit/
Pod Quick.Cms działa.

lordofhares.com

euphoria-art

Avatar: euphoria-art

2010-10-09 22:33

Na tej stronce jest coś takiego:

"Wklej poniższy kod na stronę, na której chcesz zliczać liczbę gości.
Kod należy wkleić na samej górze strony ! ! !
<? php
ob_start();
$start=microtime();
// kod do liczenia czasu ładowania strony
?>

z resztą sobie poradze

Cinek.ck wiesz może gdzie to wkleić?

http://www.obrazygaleria.pl

Cinek.ck

Avatar: Cinek.ck

2010-10-09 23:10

Znaczy ja po najmniejszej linii oporu inkludowałem plik zlicz.php w container.tpl tam gdzie się ma wyświetlać.
Mam jazdę z tymi licznikami bo po jakimś czasie zerują się echhh i te z neta i te samemu napisane i te od Quick.Cms z dokumentacji, może mam coś z serwerem, daj znać jak Ci się też wyzeruje.

lordofhares.com

euphoria-art

Avatar: euphoria-art

2010-10-09 23:26

OK dam znać tylko jeszcze go nie wstawiłem,
nie wiem co robię źle ale nie wyświetla mi się ten licznik, zrobiłem jak w opisie :( z tej stronki
Cinek.ck napisz co i jak i gdzie mam umieścić żeby działało

http://www.obrazygaleria.pl

Cinek.ck

Avatar: Cinek.ck

2010-10-09 23:52

Ja zrobiłem tak że zapisałem do core plik zlicz.php a w nim:


<?php
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);
                }
        }

// ========== Scieżki ==========

    
$scr[0] = "licznik/ip.dat";
    
$scr[1] = "licznik/dane.dat";
    
$scr[2] = "licznik/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 '';

// ========== zró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);
    
    echo 
"<font color=\"#400000\" size=\"1\">odwiedzin: </font><font color=\"#408080\" size=\"1\"><b>$dane[0]</b></font><br>";
   
echo "<font color=\"#400000\" size=\"1\">dzisiaj: </font><font color=\"#408080\" size=\"1\"><b>$dane[1]</b></font><br>";
   
echo "<font color=\"#400000\" size=\"1\">on-line: </font><font color=\"#408080\" size=\"1\"><b>$online</b></font><br>"; 

  // LICZNIK POWSTANIA STRONY
  //przekształcamy datę w przeszłosci do formatu unix'owego
   
$data strtotime("2010-8-26 0:00:30");  // tu wpisz datę od kiedy ma liczyć
  //pobieramy bieżacy czas
   
$teraz time();
  
//różnice dzielimy przez jeden dzień czyli 60 s. * 60 m. * 24 godz.
   
$dni_r = ($teraz $data) / (60 60 24);
  
//częsć 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ęsć 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ęsć całkowita to liczba minut
   
$minut_c floor($minut_r);
  
//częsć całkowita reszty pomnożonej przez minutę to liczba sekund
   
$sekund_c floor(($minut_r $minut_c) * 60);
  echo 
"<font color=\"#400000\" size=\"1\">strona istnieje: </font><font color=\"#408080\" size=\"1\"><b>$dni_c</b></font><font color=\"#400000\" size=\"1\"> dni</font><br>";

  // LICZNIK GENEROWANIA STRONY
   
echo "<font color=\"#400000\" size=\"1\">Strona wygenerowana w: </font>";
   
echo "<font color=\"#408080\" size=\"1\"><b>";
   
echo round(microtime()-$start3);
   echo 
"</b></font><font color=\"#400000\" size=\"1\"> sek</font>";

?>


Utworzyłem folder licznik w głównym katalogu i w nim pliki .dat
Potem w container.tpl wywołałem go porzez :


<?php
require_once DIR_CORE.'zlicz.php';
?>


I jak chesz skorzystać z tego rozwiązania to musisz w config/general.php  zmienić na 
$config['embed_php'] = true;

z tego co wiem to nie jest zalecany sposób wywoływania plików w Quick.Cms 
można się pobawić i przerobić to lekko żeby nie inkludować plików w container.tpl

Jak chcesz to tu masz jeszcze jeden sam online.
w core/common.php 


function online( ){
 $minut = 20;
$teraz = time()+60*$minut;
$bazaip = file("db/online.txt");
$ile = count($bazaip);
$ip = $_SERVER["REMOTE_ADDR"];

for ($i=0;$i<$ile;$i++) {
$pol = explode("`",$bazaip[$i]);
if ($pol[2]<time()) {$bazaip[$i]="";}
if ($pol[1]==$ip) {
$bazaip[$i]="`$ip`$teraz`<br>\n"; $jest=1;
}
}

if ($jest<>1) $bazaip[]="`$ip`$teraz`\n";
$f = fopen("db/online.txt","w");flock($f,2);
for ($i=0;$i<$ile+1;$i++) {
if ($bazaip[$i]<>"") { fwrite($f, $bazaip[$i]); $ileip++; }
}
flock($f,3); fclose($f);
    return $ile;    
}  // end function online



Potem żeby wywołać licznik odnieś się w index.php
wstaw:
$iOnline = online( );
i w np. tempates/container.tpl w miejscu gdzie ma się wyswitlić wstawiasz zmienną $iOnline
Do np. db dodaj plik online.txt z chmodem 777

To chyba wszystko.

lordofhares.com

euphoria-art

Avatar: euphoria-art

2010-10-10 21:02

Dzieki Cinek.ck udało się:) tylko mam mały problem, nie ma czcionki polskiej &#65533;adowanie
strona testowa http://okna-drzwi.cba.pl/?petzl,11 i nie wiem jak mam dodać napis STATYSTYKI o takiej samej czcionce jak KATEGORIE żeby to ładnie wyglądało ze zmianą koloru sobie poradzę

Cinek.ck

Avatar: Cinek.ck

2010-10-10 23:45

Możesz zrobić np. tak:
Do container.tpl w miejscu gdzie chcesz mieć napis dodaj
<div class="staty">Statystyki</div>
w pliku default.css w twoim przypadku
.staty{
background:inherit;
color:#000000;
font:1.75em serif;
padding:10px 0 0;
}
Co do polskich znaków to koduj w UTF-8

lordofhares.com

boboo

Avatar: boboo

2010-10-11 05:26

Euphoria,
zrób tam dodatkowe menu o nazwie "statystyki" i zamiast listy
(<li class="l$aData[sStyle]"><a href="$aData[sLinkName]" $aData[sSelected]>$aData[sName]</a>$aData[sSubContent]</li>)
wstaw tam te "zabawki".
Spójrz u mnie http://skupienie.kimla.de/ na kalendarz lub koszyk.
Polską czcionkę załatw przez zmienną $lang['xxx']="Ładowanie";
w pliku /lang/pl.php
i wtedy zamiast
"<font color=\"#400000\" size=\"1\">Strona wygenerowana w: </font>";
będzie
"<font color=\"#400000\" size=\"1\">$lang['xxx'] </font>";

http://skupienie.kimla.de/?software-quickcart,106

ziu76

Avatar: ziu76

2010-12-16 03:36

Witam,zrobiłem wszystko zgodnie z opisem,a.e mam następujące błędy nad licznikiem:

Notice: Use of undefined constant G - assumed 'G' in /core/zlicz.php on line 39

Notice: Use of undefined constant i - assumed 'i' in /core/zlicz.php on line 39

Notice: Use of undefined constant s - assumed 's' in /core/zlicz.php on line 39

a pod licznikiem:

Notice: Undefined variable: start in /core/zlicz.php on line 126

boboo

Avatar: boboo

2010-12-16 05:40

ziu76,
ubierz te G i s
w ' '
czyli zrób z tego date('G'), date('i') oraz date('s')
jeśli nie zastosowałeś się do postu Euphorii:
"Wklej poniższy kod na stronę, na której chcesz zliczać liczbę gości.
Kod należy wkleić na samej górze strony ! ! !
<? php
ob_start();
$start=microtime();
// kod do liczenia czasu ładowania strony
?>
"
czyli nie inicjujesz zmiennej $start, to nie dziw się, że jej wywołanie w linii 126 skutkuje takim meldunkiem.

http://it-service.kimla.de

Cinek.ck

Avatar: Cinek.ck

2010-12-16 12:09

Jak by ktoś chciał prostsze działające rozwiązanie liczników to w core/common.php pod pierwszą funkcją // end function throwStatus wklejamy :


function counter( ){
  
$sFile 'db/licznik';
  
$aFile file$sFile );
  
$sData $aFile[0];
  if( 
strlen$sData ) == ){
    
$sData 0;
  }
  if( !isset( 
$_COOKIE[date'Ymd' )] ) ){    
    
$sData++;
    
$rFile fopen$sFile 'w' );
    
fwrite$rFile$sData );
    
fclose$rFile );
    
setCookiedate'Ymd' ), truetime( ) + 86400 );
  }
  return 
$sData;
// end function counter

function online( ){
  
$minut 20;
  
$teraz time()+60*$minut;
  
$bazaip file("db/online");
  
$ile count($bazaip);
  
$ip $_SERVER["REMOTE_ADDR"];

  for (
$i=0;$i<$ile;$i++) {
    
$pol explode("`",$bazaip[$i]);
    if (
$pol[2]<time()) {
      
$bazaip[$i]="";
    }
    if (
$pol[1]==$ip) {
      
$bazaip[$i]="`$ip`$teraz`<br>\n"$jest=1;
    }
  }

  if (
$jest<>1$bazaip[]="`$ip`$teraz`\n";
    
$f fopen("db/online","w");flock($f,2);
    for (
$i=0;$i<$ile+1;$i++) {
      if (
$bazaip[$i]<>"") { 
        
fwrite($f$bazaip[$i]); $ileip++; 
      }
    }
  
flock($f,3); fclose($f);
  return 
$ile;    
}  
// end function online



W db trzeba stworzyć 2 pliki : licznik i online potem w index.php pod:

ob_start( 'changeCharset' );

$iCounter = counter( );
$iOnline = online( );


i w templates/conatiner.tpl wklejamy 2 zmienne żeby liczniki były widoczne
$iCounter
$iOnline

lordofhares.com

ziu76

Avatar: ziu76

2010-12-16 17:45

Dzięki bobo,pomogłeś mi,wszystko hula jak należy :) Mam jeszcze jedne pytanie,mam Quick cms 3.0,w standardowej skórce po prawej są przyciski z linkami,czcionka w kolorze czerwonym,w którym miejscu można zmienić kolor tej czcionki?Z tego co wiem to w pliku default.css,ale nie wiem dokładnie w którym miejscu,widziałem na forum podobne opisy,ale nie wiem czy to jest dokładnie to o co mi chodzi.

boboo

Avatar: boboo

2010-12-17 08:06

Przed chwilą zainstalowałem sobie QuickCMS 3.0
Niestety nie widzę żadnych przycisków po prawej stronie.
Jeśli jednak masz na myśli tę drugą prawą stronę, czyli menu3, to kolor czcionki zmienisz w default.css
w:
#menu3 a, #menu4 a{display:block;width:96%;padding:6px 2%;border-top:1px dashed #d0caca;background:inherit;color:#cc0000;font-size:1.083em;text-decoration:none;}
poeksperymentuj z wartością color:#cc0000;
a jeśli chodzi o inny kolor przy najeżdżaniu myszką, to linijkę niżej masz:
#menu3 a:hover, #menu4 a:hover, #menu3 .sub1 a:hover, #menu4 .sub1 a:hover{background-color:#f7f5f4;color:#cc0000;text-decoration:underline;}

http://it-service.kimla.de

ziu76

Avatar: ziu76

2010-12-17 11:40

Dzięki ponownie boboo,pomogło.Rzeczywiście źle napisałem pomyłkowo,menu po lewej miało być.Byłem na twojej stronie,widzę że mieszkasz niedaleko mojej rodziny:)Byłem kiedyś w tym mieście.Pozdrawiam.

ziu76

Avatar: ziu76

2010-12-22 16:44

Witam ponownie,w moim liczniku jest wszystko już prawie ok,tylko mam taki problem z licznikiem że po jakimś czasie nieobecności na stronie lub po otwarciu pierwszy raz strony na innym komputerze ma błędy ale tylko do czasu odświeżenia lub przejściu na podstronę:

Notice: Undefined variable: HTTP_REFERER in /core/zlicz.php on line 82

Notice: Undefined variable: HTTP_USER_AGENT in /core/zlicz.php on line 82

niekiedy są podobne komunikaty lecz z linią 95,spotkał się ktoś z takimi błędami licznika?

ziu76

Avatar: ziu76

2010-12-22 16:48

Zapomniałem dodać że moja wersja Quick.cms 3.0

Do góry
o nas | kontakt