nemáte někdo skript počitadla v PHP, které by návštěvníka zaznamenalo pouze jedenkrát za připojení??? Já mám počitadlo v php, ale počítá mě to pokaždé když tam přijdu v jednom připojení.
Tak si udělej vlastní... vždyť stačí obyč soubor a porovnávání Ip...
Presne tak, musis si u kazdyho kdo prijde zjistit IP adresu - promena $REMOTE_ADDR. a pricist pocitadlo jenom pokud s tehle adresy jeste nikdo neprisel.je ovsem nutny rozmyslet si jestli chces pocitat kazdou adresu jenom jednou za existenci vesmiru nebo treba testovani IPecka resetovat kazdej den.
na ziskani IP adresy pouzij:
$ip = (isset($HTTP_X_FORWARDED_FOR)) ? $HTTP_X_FORWARDED_FOR : $REMOTE_ADDR;
zapisuj napr do DB: IP, datum,prohlizec(myslim typ a verzi)
pak jen kontroluj:
jestli je IP v DB stejna jako ten kdo prisel tak zkontroluj datum jeho posledniho pristupu.. kdyz je to vic nez 24h tak ho pripocitej
jestli je IP v DB stejna jako ten kdo prisel tak zkontroluj verzi prohlizece..
jestli ma nekdo stejnou IP a jinou verzi nez predtim je mozny je to nekdo ze stejne proxy ale na jinym PC (zlepsuje to vyslednou presnost)
atd atd...
kdyz v DB jeste neni tak ho tam zapis..
by Master
<?
$datum = "datum.dat";
$pocitadloDnes = "dnes.dat";
$pocitadloVse = "vse.dat";
$ipLog = "ip.dat";
if (!File_Exists ($datum)) {exit("Nelze najít datum.dat");}
if (!File_Exists ($pocitadloDnes)) {exit("Nelze najít dnes.dat");}
if (!File_Exists ($ipLog)) {exit("Nelze najít ip.dat");}
$klika = fopen($datum, 'r');
if ($klika == false) {exit("Nelze otevřít Datum na vstup.");}
$stareDatum = fread($klika, filesize( $datum ));
fclose($klika);
$noveDatum = date("j/m/Y");
if ($noveDatum != $stareDatum) {resetujNovyDen ($noveDatum, $stareDatum, $datum, $pocitadloDnes, $ipLog);}
if (!stejnyNavstevnik($ipLog)) {
inkrementujPocitadlo ($pocitadloVse);
inkrementujPocitadlo ($pocitadloDnes);
}
$dnes = ziskejPocitadlo($pocitadloDnes);
$vse = ziskejPocitadlo($pocitadloVse);
function stejnyNavstevnik($ipLog) {
$newIP = getenv ("REMOTE_ADDR");
$klika = fopen($ipLog, 'r');
if ($klika == false) {exit("Nelze otevřít IP Log na vstup.");}
$data = fread($klika, filesize($ipLog));
fclose($klika);
$lines = explode ("\n", $data);
if (in_array ($newIP, $lines)) {return true;}
$klika = fopen ($ipLog, 'a' );
if ($klika == false) {exit("Nelze otevřít IP Log na rozšíření.");}
fwrite ($klika, "$newIP\n");
fclose ($klika);
return false;
}
function resetujNovyDen ($noveDatum, $stareDatum, $datum, $pocitadloDnes, $ipLog) {
$klika = fopen($datum, 'w');
if ($klika == false) {exit("Nelze otevřít Datum na výstup.");}
fwrite ($klika, "$noveDatum" );
fclose($klika);
$klika = fopen($pocitadloDnes, 'w');
if ($klika == false) {exit("Nelze otevřít Dnešní datum na výstup.");}
fwrite ($klika, "0" );
fclose($klika);
$klika = fopen( $ipLog, 'w' );
if ($klika == false) {exit("Nelze otevřít IP Log na výstup.");}
fwrite ($klika, "" );
fclose($klika);
}
function inkrementujPocitadlo ($soubor) {
$klika = fopen( $soubor, 'r' );
if ($klika == false) {exit("Nelze otevřít Počítadlo na vstup.");}
$data = fread($klika, filesize($soubor));
fclose($klika);
$data ++;
$klika = fopen($soubor, 'w');
if ($klika == false) {exit("Nelze otevřít počítadlo na výstup.");}
fwrite ($klika, "$data" );
fclose($klika);
}
function ziskejPocitadlo ($soubor) {
$klika = fopen($soubor, 'r');
if ($klika == false) {exit("Nelze otevřít počítadlo na vstup.");}
$data = fread($klika, filesize($soubor));
fclose($klika);
return $data;
}
?>
Denní počet: <?echo $dnes?>
Celkem přístupů: <?echo $vse?>
-----------------------------------------------------------------------
Tohle pocitadlo pocita pouze 1 ip za den a vzdycky na konci dne (00:00) vsechny smaze a jede od znova. A tady je v praxi http://fallout.wz.cz/stats.php3
>Tohle pocitadlo pocita pouze 1 ip za den a vzdycky na konci dne (00:00) vsechny smaze a jede od znova.
-to jako smaze uplne vsechny nebo jen ty z predchoziho dne??
z toho zdrojaku se to tezko cte..
je v tom celkem bordel
Vymaže se jenom "datum.dat", "dnes.dat", "ip.dat".
"vse.dat" se nevymaže, tam se zapisuje celkový počet přístupů.
"ip.dat" zapisuje ip adresy pod sebe a o půl noci se smaže
"dnes.dat" zapisuje počet denních přístupů a o půl noci se smaže
"datum.dat" zapíšuje aktuální datum a o půl noci se smaže
o pul nuci se tezko neco smaze..
to by jsi musel mit crona a toho jiste nikde nemas
když se zmení datum a to se stane v 00:00 a načte se soubor "datum.dat"(už se starým(včerejším) datem), a pak když se nove datum nerovná staremu datu
if ($noveDatum != $stareDatum) {resetujNovyDen ($noveDatum, $stareDatum, $datum, $pocitadloDnes, $ipLog);}
tak se vymažou soubory "datum.dat", "dnes.dat", "ip.dat".