Na
www.blassenweb.net je ke stažení zajímavý program. Tedy slibuje být zajímavý avšak nejsem schopný to rozchodit. Není mi úplně jasná funkce některých souborů pouze se domnívám. Má to více souborů. Přemýšlím jak to sem dostat. Zkopíruji soubor HTMP gro je však spíše v php souboru.
<html lang="cs">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=windows-1250">
<title>Statistika</title>
</head>
<body>
<h1>Statistika</h1>
<p>Tato stránka je ukázka vložení JavaScriptu do Vaší stránky. (JavaScipt si přidejte na konec stránky před tag </html>.)</p>
<script charset="windows-1250" type="text/javascript">
<!--
///////////////////////////////////
//// UVEĎTE URL STRÁNKY log.php
//// TATO MŮŽE BÝT I NA JINÉM SERVERU
log_url = "
http://localhost/az%20wz/demo/stat/log.php";
///////////////////////////////////
var useragent = navigator.userAgent;
var bName = (useragent.indexOf('Opera') > -1) ? 'Opera' : navigator.appName;
var pos = useragent.indexOf('MSIE');
if (pos > -1) {
bVer = useragent.substring(pos + 5);
var pos = bVer.indexOf(';');
var bVer = bVer.substring(0,pos);
}
var pos = useragent.indexOf('Opera');
if (pos > -1) {
bVer = useragent.substring(pos + 6);
var pos = bVer.indexOf(' ');
var bVer = bVer.substring(0, pos);
}
if (bName == "Netscape") {
var bVer = useragent.substring(

;
var pos = bVer.indexOf(' ');
var bVer = bVer.substring(0, pos);
}
if (bName == "Netscape" && parseInt(navigator.appVersion) >= 5) {
var pos = useragent.lastIndexOf('/');
var bVer = useragent.substring(pos + 1);
}
var log_brow = bName + " " + bVer;
var log_plat = navigator.platform;
var log_ref;
if (top.frames.length != 0) log_ref = top.document.referrer;
else log_ref = document.referrer;
var log_string = location.href;
log_string += "|" + log_brow;
log_string += "|" + log_plat;
log_string += "|" + window.screen.width + "x" + window.screen.height;
log_string += "|" + log_ref;
cgi = new Image();
cgi.src = log_url + "?log_string=" + escape(log_string);
// -->
</script>
</body>
</html>
PHP : log.php
<?php
// Zadejte false, nechcete-li kadou návtìvu zapisovat do souboru.
$zapis_do_souboru = true;
// Zadejte true, chcete-li obdret emailová upozornìní o kadé návtìvì.
$napsat_email = false;
// Uveïte svùj email
$prijemce = '
uzivatel@server.cz';
// Uveïte maximální poèet øádku ve statistickém souboru
$max_radky = 100;
$ip = getenv ("REMOTE_ADDR");
// Uveïte svoji vlastní IP adresu, nechcete-li zapisovat své vlastní pøístupy.
if ($ip == '00.00.000.000') exit;
////////////////////////// DALÍ ZMÌNY NEJSOU ZAPOTØEBÍ
$datum = "./data/datum.cgi";
$pocitadloDnes = "./data/pocitadloDnes.cgi";
$pocitadloVse = "./data/pocitadloVse.cgi";
$ipLog = "./data/ipLog.cgi";
$soubor = './data/logData.cgi';
if (!File_Exists($datum)) exit("
Soubor $datum nenalezen");
if (!File_Exists($pocitadloDnes)) exit("
Soubor $pocitadloDnes nenalezen");
if (!File_Exists($ipLog)) exit("
Soubor $ipLog nenalezen");
if (!File_Exists($soubor)) exit("
Soubor $soubor nenalezen");
//////////////////////////// ZÍSKEJ DATUM POSLEDNÍ NÁVTÌVY A DNENÍ DATUM
$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);
resetujLog($soubor, $max_radky);
}
if (stejnaIP($ip,$ipLog)) {
exit;
}
inkrementujPocitadlo($pocitadloVse);
inkrementujPocitadlo($pocitadloDnes);
/////////////////////////// ZÁPIS STATISTIKY
$log_string = $_GET['log_string'];
list($href,$brow,$plat,$rozl,$ref) = explode('|', $log_string);
$datum = date(Ymd);
$cas = date("H:i:s");
if ($zapis_do_souboru == true) {
$radek = "$ip" . "|" . "$href" . "|" . "$rozl" . "|" . "$datum" . "|" . "$cas" . "|" . "$brow" . "|" . "$plat" . "|" . "$ref";
$klika = fopen($soubor, 'a');
if ($klika == false) exit;
$radek .= "\n";
fwrite ($klika, "$radek" );
fclose ($klika);
}
/////////////////////////// ODESLAT EMAILOVÉ UPOZORNÌNÍ
if ($napsat_email == true) {
$telo .= "Stránka: $href\r\n";
$telo .= "Datum:" . date("d/m/Y") . " $cas\r\n";
$telo .= "Odkud pøiel: $ref\r\n";
$telo .= "IP adresa: $ip\r\n";
$telo .= "Prohlíeè: $brow\r\n";
$telo .= "Platforma: $plat\r\n";
$telo .= "Rozliení: $rozl\r\n";
$hlavicky .= "Content-Type: text/plain; charset=windows-1250\r\n";
mail($prijemce, 'Na stranky prisel navstevnik!!!', $telo, $hlavicky);
}
/////////////////////////// JE TO STEJNÝ NÁVTÌVNÍK? //////////////////////////////
function stejnaIP($ip,$ipLog) {
$ip = getenv ("REMOTE_ADDR");
//////////// JE IP ADDRESA V SOUBORU?
$klika = fopen($ipLog,'r');
if ($klika == false) exit("Nelze otevøít IP Log na vstup.");
$data = fread($klika, filesize($ipLog));
fclose($klika);
$radky = explode ("\n",$data);
if (in_array ($ip,$radky)) return true;
//////////// PØIDEJ IP ADDRESSU
$klika = fopen($ipLog,'a');
if ($klika == false) exit("Nelze otevøít IP Log na rozíøení.");
fwrite ($klika,"$ip\n");
fclose ($klika);
return false;
} // end func
//////////////////////////// RESETUJ SOUBORY PRO NOVÝ DEN //////////////////////////
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 Dnení 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);
} // end func
///////////////////////////// INKREMENTUJ POÈÍTADLO /////////////////////////
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);
} // end func
/////////////////////// OMEZUJE MAX. VELIKOST STAT. SOUBORU /////////////////////
function resetujLog($soubor, $max_radky) {
$radky = file ($soubor);
$radky = array_reverse ($radky);
$pocet = count ($radky);
if ($pocet > $max_radky)
$kolik = $max_radky;
else
$kolik = $pocet;
$radky = array_slice ($radky, 0, $kolik);
while (list (, $hodnota) = each ($radky))
echo "
$hodnota";
$radky = array_reverse ($radky);
reset ($radky);
$klika = fopen($soubor, "w");
while(list(, $hodnota) = each($radky))
fputs ($klika, $hodnota, strlen ($hodnota));
fclose ($klika);
} // end func
?>
list.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>WWW statistika</title>
<style type="text/css">
<!--
body {background-color:aliceblue; color:black;}
table {border:1px solid steelblue; border-collapse:collapse;}
td {background-color:ghostwhite; border:1px solid steelblue;}
th {background-color:lightsteelblue; border:1px solid steelblue;}
-->
</style>
</head>
<body>
<?php
$soubor = './data/logData.cgi';
$pocitadloDnes = "./data/pocitadloDnes.cgi";
$pocitadloVse = "./data/pocitadloVse.cgi";
$dnes = ziskejPocitadlo($pocitadloDnes);
$vse = ziskejPocitadlo($pocitadloVse);
echo "Návtìvy celkem
$vse a dnes
$dnes ";
if (!File_Exists ($soubor)) exit ("<p>Soubor $soubor nenalezen.</p>");
$obsahSouboru = file ($soubor);
while (list (,$radek) = each ($obsahSouboru))
list ($pole_ip[], $pole_href[], $pole_rozl[], $pole_datum[], $pole_cas[], $pole_brow[], $pole_plat[], $pole_ref[]) = explode("|", $radek);
echo "<h2>WWW statistika</h2>";
tabulka ('Prohlíeè',$pole_brow,false);
tabulka ('Platforma',$pole_plat,false);
tabulka ('Rozliení',$pole_rozl,false);
tabulka ('Vstupní stránka',$pole_href,'href');
tabulka ('Datum',$pole_datum,'datum');
tabulka ('IP adresa',$pole_ip,false);
tabulka ('Odkud návtìvníci pøili',$pole_ref,'href');
////////////////////////// VYPSAT TABULKU
function tabulka ($napis,$pole,$format) {
if (count($pole) < 1 ) {
echo "<p>Statistka
$napis neobsahuje ádné zápisy</p>";
return;
}
natcasesort($pole);
$i = 0;
$save = '';
echo '<p><table border="1" width="100%">';
echo "<tr><th align='left' width='75%'>$napis</th><th align='left' width='25%'>Unikátní návtìvy</th>";
while (list (,$v) = each ($pole)) {
if ($format == 'datum')
$v = substr($v,6,2) . '/' . substr($v,4,2) . '/' . substr($v,0,4);
elseif ($format == 'href')
$v = "<a target=\"_blank\" href=\"$v\">$v[/url]";
if ($i > 0) {
if ($save != $v) {
echo "<tr><td>$save </td><td align='right'>$i</td></tr>";
$i = 0;
$save = $v;
}
}
else
$save = $v;
$i++;
}
if ($i > 0)
echo "<tr><td>$save </td><td align='right'>$i</td></tr>";
echo '</table>';
} // end func
/////////////////////////// ZÍSKEJ POSLEDNÍ HODNOTU POÈÍTADLA
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;
} // end func
?>
</body>
</html>
Už jsem to zkoušel rozchodit ale domnívám se, že to do souborů ve složce DATA to vůbec nezapisuje.
Poznal jsem to velikosti souborů, selhávají mi i pokusy to nějak rozumně prohlédnout.
soubory ve složce DATA jsou tyto, datum.cgi , ipLog.cgi , pocitadloDnes.cgi , pocitadloVse.cgi , pocitadloVse.cgi
soubory datum.cgi , pocitadloDnes.cgi , pocitadloVse.cgi jsou ve Slaxu ikonami označeny jako txt
Možná s tím už někdo má zkušenosti. Nebo něčím snadnějším v JS.