QARK.net — Počítadlo přístupů v PHP - 2. část
Počítadlo přístupů v PHP - 2. část

Počítadlo přístupů v PHP – 2. část

Předchozí díly [1]

V předchozím díle jsem vám ukázal, jak si jednoduše vytvořit počítadlo přístupů v PHP. Dneska použijeme funkce z prvního dílu a zaměříme na grafické zobrazení počtu návštěvníků. Konečný výpis bude vypadat přesně jako mám já na svém webu vpravo. Získáte tak jednoduchý přehled dnešních, celkových a online návštěvníků, který vypadá lépe, než jeho textová podoba.


Nejdůležitější věcí, kterou budeme potřebovat je GD knihovna. Ta nám umožní vytvořit si výsledný obrázek počítadla. Tahle knihovna bývá na každém kvalitním hostingu. Pokud pracujete doma na localhostu, ujistěte se, že máte v php.ini správně nastavenou cestu do adresáře s extensions
(například: extension_dir="c:\php\extensions\"), a že máte odstraněn středník před extension=php_gd2.dll.

Poté co tuhle úpravu uděláte, nezapomeňte restartovat Apache. Ještě dodávám, že php.ini se většinou nachází v adresáři Windows.

A jdeme na to

Ke všemu nám bude stačit jedna jediná nová funkce, která pomocí výsledku z funkce navstevy() z předchozího dílu, vytvoří potřebný obrázek. Pokud jste nikdy s GD funkcemi nepracovali, nastudujte si je z manuálu.

function obrazek($online=0,$dnes=0,$celkem=0)
{
#vzhledem k tomu, ze celkove navstevy byvaji velke cislo, upravime jej tak, aby se pekne zobrazovalo
#napr misto 50000 bude zobrazeno 50 000 .. atd	
$celkem=Number_Format($celkem, 0, '.', ' ');
#vytvorime obrazek o spravne velikosti
$image=ImageCreate(79, 31);
#definujeme barvy		
$cerna=ImageColorAllocate($image,0, 0, 0);
$bila=ImageColorAllocate($image,255, 255, 255);
$orange=ImageColorAllocate($image,255, 102, 0);
$modra=ImageColorAllocate($image,51, 102, 153);
 
#cerny okraj kolem obrazku
ImageRectangle($image,0,0,79,31,$cerna);
#bile udelame vnitrek obrazku
ImageFilledRectangle($image,1,1,77,29,$bila);
#leva modra cast
ImageFilledRectangle($image,2,2,38,28,$modra);
#prava oranzova cast
ImageFilledRectangle($image,40,2,76,28,$orange);
 
#vypiseme text pomoci fontu 
#poznamka: ta rotace textu 0.1 je tam proto, ze bez ni ten text byl nejaky krivy :-(
Imagettftext($image, 6, 0.1, 5, 10, $bila, 'font2.ttf', "ONLINE:");
Imagettftext($image, 6, 0.1, 45, 10, $bila, 'font2.ttf', $online);
Imagettftext($image, 6, 0.1, 5, 18, $bila, 'font2.ttf', "DNES:");
Imagettftext($image, 6, 0.1, 45, 18, $bila, 'font2.ttf', $dnes);
Imagettftext($image, 6, 0.1, 5, 26, $bila, 'font2.ttf', "CELKEM:");
Imagettftext($image, 6, 0.1, 45, 26, $bila, 'font2.ttf', $celkem);
#posleme hlavicku pro PNG obrazek	
header('Content-Type: image/png');
#zobrazime obrazek
imagepng($image);
#uvolnime obrazek z pameti
imagedestroy($image);
}

Použití

Možné je dvojí použití. V prvním případě si vytvoříte soubor navsteva.php a do něj umístíte funkce z předchozího dílu a přidáte tuhle novou, pro zobrazení obrázku.

pocitadlo();
$navstevnici = navstevy();
obrazek($navstevnici['online'],$navstevnici['dnes'],$navstevnici['celkem']);

Později v XHTML zobrazíte počítadlo <img src="navsteva.php" alt="Statistika" />

Před tímto použitím, ale varuji. Ochudíte se totiž o návštěvníky, kteří mají v prohlížeči vypnuté obrázky. Mnohem lepší je zavolat funkci pocitadlo() někde na hlavní stránce, čím se provede počítání pro všechny návštěvníky. Do navsteva.php potom vložíte jen funkci navstevy()obrazek(). Tento příklad najdete v souboru ke stažení.

Nezapomeňte se v každém scriptu připojit k databázi, aby se provedl SQL dotaz.

Soubor ke stažení

Zdojový soubor si můžete stáhnout [ZDE]




V příštím díle si ukážeme, jak jednoduše vytvořit graf s týdenní návštěvností.



Související články:
Qark | 24. 07. 2005 15:34 | Komentáře: 3 | ::Programování


Přidat článek do: [ linkuj.cz], [ jagg.cz], [ asdf.sk], [ del.icio.us]

Stáhnout článek jako [ PDF]
[ RSS komentářů] k článku

[ Napsat] komentář

Články a fotografie z tohoto webu je zakázáno kopírovat a přidávat si je na svoje blogy, či kamkoliv jinam, bez mého písemného souhlasu!

Komentáře


1
K5 14. 08. 2005 01:27

Zdar a sílu,
jelikož vůbec neumím php, jsem za toto hotové počítadlo velmi vděčný. I s mými chatrnými znalostmi se mi ho před pár týdny podařilo rozchodit :-)

A nejen to, protože jsem chtěl mít různá počítadla pro různé stránky a to i ne-php, strávil jsem dnešní (vlastně včerejší, už je po půlnoci) večer objevováním, jaxe to dělá. Myslím, že se mi to i povedlo. Přidal jsem do databáze další tabulky pro počítadla a php upravil tak, aby se zobrazilo počítadlo podle parametru v URL (např. counter.php?c=1), i jsem ošetřil neplatný nebo žádný parametr (je to sice naprosto triviální, ale než jsem na to přišel..). Jako bonbónek jsem pak udělal, že se šířka obrázku počítadla mění podle nejširšího čísla, aby to hezky vypadalo :-)

Co jsem ale nedokázal: napsat jednoduchý php skriptík pro založení nového počítadla + s tím související kontrolu, zda-li se parametr odkazuje na existující tabulku v databázi. Čili díl čtvrtý by mohl být na toto téma, co ty na to?

Také si myslím, že pořadí 1) volání funkce pro zanesení návštěvníka do databáze 2) kreslení obrázku, by šlo sloučit rovnou do kreslení toho obrázku, ale nezkoušel jsem to, přece jenom už je půl druhé ráno.

Můj začátečnický výplod je když tak k prozkoumání tady:
http://k5.kreteni.cz/download/php_counter.zip

Reakce na komentář: Qark #2Načítám náhled komentáře...

2
Qark url 16. 08. 2005 23:35

Reakce na K5 #1Načítám náhled komentáře...: Omlouvám se, že odepisuji až teď.
No já bych místo tvorby tabulek jen přidal sloupec s číslem stránky do tabulky s počítadlem. Bylo by to jednodušší. Do selectu bys jen přidal WHERE stranka=$c a hotovo. Funkce kde se zjišťuje jestli záznam v tabulce existuje je už hotová, tak by stačilo lehce upravit s přidáním podmínky na stránku a máš to. V podstatě je potřeba jen pár minimálních úprav mého kódu a máš počítadlo pro mnoho stránek.


3
K5 17. 08. 2005 23:08

Jo, jo, takovéto řešení by také šlo, ale to vyžaduje kromě php i znalost SQL a tak daleko ještě nejsem :-)

Až trochu pokročím, začnu zkoumat, jak to udělat, aby IP adresy nepřibývaly do databáze donekonečna: spočítat IP adresy, jejichž datum není dnešní, toto číslo přičíst k celkové návštěvnosti a tyto IP vymazat. Zbytek může zůstat víceméně stejný (myslím).

Přidej komentář

Web je nyní kompletně uzavřen. Od této chvíle není možné přidávat žádné komentáře!

Další informace naleznete zde.