Nabijanie licznika

boboo

Avatar: boboo

2011-07-22 16:38

być może wielu cieszy, gdy licznik pokazuje setki i tysiące odwiedzin dziennie, lecz są to wartości nieprawdziwe. spora część pochodzi od botów i jako taka fałszuje statystykę odwiedzin. jeśli chcesz mieć przwdziwe wartości i spokojne sumienie zmodyfikuj sobie plugin simpleCounter.
na np. taki:


function simpleCounter(){
$sFile='db/counter.php';
$aFile=file($sFile);
$sUserAgent=$_SERVER['HTTP_USER_AGENT'];
if(isset($aFile[1])&&!empty($aFile[1])){
 $aExp=explode('$',$aFile[1]);
 $sDate=date('Y-m-d');
 $aVisits[0]=$aExp[0];
 $aVisits[1]=(!empty($aExp[2])&&$aExp[2]==$sDate)?$aExp[1]:0;
}
if(!isset($_COOKIE['sCounter'])){
 $sSave='<?php exit;?>'."\n";
 if(isset($aVisits)&&stristr($sUserAgent,'bot')===false&&stristr($sUserAgent,'slurp')===false ){
  $aVisits[0]++;
  $aVisits[1]++;
 }
 @file_put_contents($sFile,$sSave.$aVisits[0].'$'.$aVisits[1].'$'.date('Y-m-d').'$'."\n& quot;,LOCK_EX);
 @setcookie('sCounter',true,time()+7200);
}
if(isset($aVisits))
 return $aVisits;
else
 return Array(1,1);
}

» Quick.Cms v3.x

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-22 16:53

dobra robota! mi czasami nabija ponad 500 odwiedzin, mam takie pytanie, czy wszystkie boty są wykluczone?

boboo

Avatar: boboo

2011-07-22 17:03

tylko te, które mają w nazwie 'bot' lub 'slurp'.
możesz dodać jeszcze 'crawler' i poszukać w sieci o nazwach innych botów.
nazwa jest w $_SERVER['HTTP_USER_AGENT']
a dodawać możesz w następujący sposób:
linijkę:


if(isset($aVisits)&&stristr($sUserAgent,'bot')===false&&stristr($sUserAgent,'slurp')===fal se){


rozszerz o następne:

&&stristr($sUserAgent,'tu ciąg liter, który występuje w bocie')===false

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-22 17:04

i jeszcze dwa pytania, czy w user online będzie pokazywać prawdziwe odwiedziny? czy trzeba to jakoś też zmodyfikować? i czy jest już w tym kodzie te zabezpieczenie przed zerowaniem licznika? kiedyś gdzieś na forum podawałeś.

boboo

Avatar: boboo

2011-07-22 17:05

to takie proste rozwiązanie.
ładniejsze i wygodniejsze jest trzymanie tego w bazie z możliwością dodawania 'botowych stringów' z poziomu admina :-)

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-22 17:05

ok dzięki jak wyszukam wszystkie boty to sypnę tu niżej ;)

boboo

Avatar: boboo

2011-07-22 17:06

nie, userOnline też trzeba przerobić, czyli wykluczyć tak samo jak w simpleCounter.

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-22 17:07

ok porównam kody i może mi się uda przerobić:)

euphoria-art

Avatar: euphoria-art

2011-07-23 00:08

Bobo napisz jeszcze gdzie i co mam wstawić w useronline, bo nie chce nic namieszać, kod u mnie wygląda tak:

function usersOnline(){
$sPlik='db/UsersOnline.bob';
$time=time();
$iOnline=$time-600;
$ip=$_SERVER['REMOTE_ADDR'];
$aCheckTime=@file($sPlik);
while(list($line_num,$line)=@each($aCheckTime)){
$sCzas=explode('$',$line);
if($sCzas[0]<=$iOnline){
$contents=file_get_contents($sPlik);
$sPusty=null;
$sZamien=str_replace($line,$sPusty,$contents);
file_put_contents($sPlik,$sZamien,LOCK_EX);
chmod($sPlik,0777);
}
}
$aCheckIP=@file($sPlik);
while(list($line_num,$line)=@each($aCheckIP)){
$aIP=explode('$',$line);
if($aIP[1]==$ip){
$contents=file_get_contents($sPlik);
$sPusty=null;
$sZamien=str_replace($line,$sPusty,$contents);
file_put_contents($sPlik,$sZamien,LOCK_EX);
chmod($sPlik,0777);
}
}
file_put_contents($sPlik,$time.'$'.$ip.'$'."\n", FILE_APPEND | LOCK_EX);
$Zawartosc=file($sPlik);
$iUserOnline=count($Zawartosc);
return $iUserOnline;
}
function usersOnlineAdmin(){
$sPlik='db/UsersOnline.bob';
$sZawartosc=file($sPlik);
$iUserOnline=count($sZawartosc);
return $iUserOnline;
}

euphoria-art

Avatar: euphoria-art

2011-07-23 01:06

coś jest nie tak, resetuje mi się za każdym razem jak ktoś nowy wchodzi na stronę, a to moja funkcja
function simpleCounter(){
if(is_file(DB_COUNTER)){
$aFile=file(DB_COUNTER);
$sUserAgent=$_SERVER['HTTP_USER_AGENT'];
if(isset($aFile[1])&&!empty($aFile[1])){
$aExp=explode('$',$aFile[1]);
$sDate=date('Y-m-d');
$aVisits[0]=$aExp[0];
$aVisits[1]=(!empty($aExp[2])&&$aExp[2]==$sDate)?$aExp[1]:0;
}
if(!isset($_COOKIE['osSimpleCounter'])){
$sSave='<?php exit;?>'."\n";
if(isset($aVisits)&&stristr($sUserAgent,'bot')===false&&stristr($sUserAgent,'slurp')===fal se ){
$aVisits[0]++;
$aVisits[1]++;
}
else
$aVisits=Array(1,1);
@file_put_contents(DB_COUNTER,$sSave.$aVisits[0].'$'.$aVisits[1].'$'.date('Y-m-d').'$'."\ n",LOCK_EX);
setcookie('osSimpleCounter',true,time()+7200);
}
if(isset($aVisits))
return $aVisits;
else
return Array(1,1);
}
}// end function simpleCounter

sorry za śmietnik

boboo

Avatar: boboo

2011-07-23 06:30

prosiłem tu już kilkakrotnie, aby powiększono okienko, w które wpisuje się tekst (Content).
bo czasem wychodzą takie błędy, że rozwala wyrazy na dwie części.
ta linijka:
if(isset($aVisits)&&stristr($sUserAgent,'bot')===false&&stristr($sUserAgent,'slurp')===fal se){
nie może funkcjonować, jeśli jest 'fal se' zamiast 'false'.

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-23 10:14

ok, wyżej podałem kod online counter, i nie wiem gdzie go trzeba zmodyfikować żeby wykluczyć boty, Boboo byś mógł wrzucić niżej przerobiony kod useronline.

euphoria-art

Avatar: euphoria-art

2011-07-23 11:00

dam sobie spokój z tym, dalej mi się resetuje coś jest nie tak

boboo

Avatar: boboo

2011-07-23 11:51

teraz to możesz mieć pretensje tylko do siebie.
popatrz jeszcze raz na mój pierwszy post.
a potem napisz tu, czy znalazłeś w nim takie coś:

else
 
$aVisits=Array(1,1);

it-service.kimla.de ---> qc plugins&tips

euphoria-art

Avatar: euphoria-art

2011-07-23 13:54

else
$aVisits=Array(1,1); czyli mam to usunąć ze swojego kodu? wcześniej to u mnie było i licznik się nie resetował, a wiec pomyślałem że musi to zostać, a z tym online napiszesz jak to zrobić?

euphoria-art

Avatar: euphoria-art

2011-07-28 15:49

boboo przydał by się jeszcze do kompletu liczników plugin - page rank strony pokazujący wynik. Jak potrafiłbyś coś takiego zmontować to wrzuć na forum ;)

Do góry
o nas | kontakt