/**********************************************
Statystyka Stron WWW "Reggi-Stat"
Wersja 0.9.1 z dnia 2002.09.17
Autor: Marek REGGI Reinowski
www.reggi.pl, reggi@reggi.pl
Status: freeware
Miłym akcentem będzie umieszczenie na stronie
mojego znaczka reggi.png z odno¶nikem do
strony www.reggi.pl
************************************************
Parametry przekazywane w URL:
s - nazwa strony do wyswietlenia w statystyce
(moze sie skladac z liter, cyfr i znaku podkreslenia)
p - czy pokazywac licznik (1-tak, 0-nie)
u - url do przekierowania
f - numer czcionki
r, g, b - wartosci poszczegolnych skladowych koloru czcionki
Zmienne uzywane w programie:
$plik_licznikow - plik z danymi dla licznika
$plik_odwiedzin - plik z danymi statystyk
$plik_logo - plik z logo statystyk - wyswietlany jesli php nie obsluguje grafiki
$typ_obrazka - typ obrazka (poprawne tylko "png" lub "gif")
$obsluga_grafiki - informuje skrypt o obslugiwaniu/nieobslugiwaniu
przez php funkcji graficznych (poprawne "on", "off");
$zliczaj_wszystkie - ustawia zliczania/niezliczanie od¶wieżeń strony przez tego samego użytkownika
"false" - nie zliczaj od¶wieżeń, "true" - zliczaj wszystkie od¶wieżenia
$nazwa_serwera - nazwa twojego serwera pobierana
ze zmiennych srodowiska (najczesciej nie wymaga zmiany)
$download_sciezka - sciezka do katalogu z plikami do sciagania
(w celu skrocenia zmiennej 'u' w URL)
MUSI zaczynac sie od znaku /
$adres_goscia - adres komputera, z ktorego jest przegladana strona
$przegladarka - przegladarka uzywana przez goscia
Przykladowy sposob wstawienia na strone:
*/
$plik_licznikow = "stat/liczniki.txt";
$plik_odwiedzin = "stat/ogolne.txt";
$plik_logo = "stat/stat_images/reggi_stat.gif";
$typ_obrazka = "png";
$obsluga_grafiki = "on";
$zliczaj_wszystkie = false;
$download_sciezka = "/download";
$nazwa_serwera = $HTTP_SERVER_VARS["SERVER_NAME"] . $download_sciezka;
function zapisz()
{
global $HTTP_SERVER_VARS, $HTTP_GET_VARS, $plik_licznikow, $plik_odwiedzin, $ile, $zliczaj_wszystkie;
$adres_goscia = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$przegladarka = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
$s = $HTTP_GET_VARS["s"];
$s = strtolower($s);
$plik = fopen($plik_licznikow, "r");
while (!feof ($plik) )
{
$linia = fgets ($plik, 100);
$rozbij = explode (";", $linia);
if ($rozbij[0] == $s)
{
$jest=1;
$ile = $rozbij[2];
if ($rozbij[1] != $adres_goscia || $zliczaj_wszystkie)
{
$ile++;
$zapiszstat=1;
}
$zapisz .= "$s;$adres_goscia;$ile;\n";
}
else
{
$zapisz .= "$linia";
}
}
fclose ($plik);
if ($jest != 1)
{
$ile=1;
$zapiszstat=1;
if ($s == "") $s = "_Bledne_odwolanie_";
$zapisz .= "$s;$adres_goscia;$ile;\n";
}
if ($plik = fopen ($plik_licznikow, "w"))
{
fwrite ($plik, $zapisz);
fclose ($plik);
}
if ($zapiszstat == 1)
{
$plik = fopen ($plik_odwiedzin, "a");
$data = date ("Y.m.d");
$godzina = date("H:i");
$hostname = gethostbyaddr ($adres_goscia);
fwrite ($plik, "$s $adres_goscia $hostname $przegladarka $data $godzina\n");
fclose ($plik);
}
}
function plik_sprawdz($nazwa_pliku)
{
if (!is_writeable($nazwa_pliku))
{
if (!file_exists($nazwa_pliku))
{
if ($plik = @fopen($nazwa_pliku, "w"))
{
fclose ($plik);
}
else
{
echo "REGGI-STAT info: nie udalo sie utworzyc pliku " . $nazwa_pliku . " - utworz recznie ten plik i nadaj mu prawa 0666 (zapis i odczyt dla wszystkich)
";
$blad = 1;
}
}
if (!@chmod($nazwa_pliku, 0666))
{
if (!$blad) echo "REGGI-STAT info: nie udalo sie zmienic praw dostepu pliku " . $nazwa_pliku . " - ustaw recznie prawa na 0666 (zapis i odczyt dla wszystkich)
";
$blad=1;
}
}
return $blad;
}
function pokaz_obrazek($ile, $pokaz, $font, $red, $green, $blue)
{
global $typ_obrazka;
if (!isset($ile)) $ile=1;
header ("Content-type: image/$typ_obrazka");
settype($ile, "string");
$szer = strlen($ile)*8;
$image = imagecreate($szer, 13);
$color_font = imagecolorallocate($image, $red, $green, $blue);
$color_bg = imagecolorallocate($image, 0, 0, 0);
imagecolortransparent($image, $color_bg);
imagefill($image, 0, 0, $color_bg);
if ($pokaz == 1) imagestring($image, $font, 0, 0, $ile, $color_font);
$generuj_obrazek = "image" . $typ_obrazka;
$generuj_obrazek($image);
}
function pokaz_reggi_png ($plik_logo)
{
header ("Content-type: image/gif");
if (file_exists($plik_logo))
{
readfile($plik_logo);
}
else
{
echo "REGGI-STAT info: nie istnieje plik z obrazkiem do statystyk. Sprawdz czy istnieje plik " . $plik_logo . "
";
}
}
function przekieruj($url)
{
global $nazwa_serwera;
$plik = ereg_replace("http://", "", $url);
header("Location: http://" . $nazwa_serwera . "/" . $plik);
}
/*
* Sprawdzenie, czy podano poprawny kolor czcionki,
* jesli nie, czcionka bedzie czarna
*/
if ($r <0 || $r >255 || $g <0 || $g >255 || $b <0 || $b >255)
{
$r = 0;
$g = 0;
$b = 0;
}
/*
* Sprawdzenie, czy wielkosc czcionki to pojedyncza cyfra,
* Jesli nie, czcionka bedzie miala wielkosc 4
*/
if (!ereg("^([0-9]{1})$", $f)) $f=4;
/*
* Sprawdzenie, czy nazwa strony sklada sie tylko ze znakow alfanumerycznych,
*/
$s = strtolower($s);
if (!ereg("^([a-z1-9_]+)$", $s)) $s = "Blad";
/*
* Sprawdzenie, czy istnieje i ma prawidlowa wartosc zmienna $p okreslajaca
* czy ma byc pokazywany licznik - jesli tak nie jest, otrzymuje wartosc 0 (nie wyswietla),
*/
if (!(isset($p) || $p==1 || $p==0)) $p = 0;
/*
* Sprawdzenie, czy mozna zapisac statystyki
*/
$blad = plik_sprawdz($plik_licznikow);
$blad += plik_sprawdz($plik_odwiedzin);
if (!$blad)
{
zapisz();
if ($u)
{
przekieruj($u);
}
else
{
if ($obsluga_grafiki == "on")
{
pokaz_obrazek($ile, $p, $f, $r, $g, $b);
}
else
{
pokaz_reggi_png($plik_logo);
}
}
}
?>