Ako na IP Bloker (upravené pre čítanie zo súboru)

Rasťo Turek  /  08. 10. 2004, 00:00

Keďže ste mi napísali už veľké množstvo mailov, že by ste uvítali upravenú verziu úspešného IP blokera, rozhodol som sa pozrieť aj na túto problematiku. Táto úprava sa týka hlavne spôsobu načítavania. Tento raz som sa prispôsobil vašim požiadavkám a upravil som ip bloker tak, aby načítaval ip adresy z textového súboru.

Každý, kto si neprečítal článok o ip blokeri nech tak spraví, lebo sa už k teórii vracať nebudem.
Teraz vám len ukážem, ako sa dá jednoducho upraviť tento bloker aj na čítanie ip z textového
súboru.

bloker.php
Tu som nadefinoval kompletne celú funkciu pre načítavanie ip adresy a jej následné blokovanie.
Pozrime sa na tento skript:

// nadefinovaná správa pri zablokovanej ipčke
$sprava = "Vaša IP adresa bola zablokovaná. Prosím kontaktujte administrátora!";
// súbor, kde sú uložené blokované ip adresy
$subor = fopen("./ipky.txt","r");
// vytvoríme si funkciu na zablokovanie ip adresy
function blok_ip($ip)
{
// určíme si globálne premenné, ktoré budeme používať vo funkcii
global $sprava, $subor;
// prejdeme všetky ip adresy v txt súbore
while($iptxt = fgets($subor, 4096))
{
// orežeme ipčky, ktoré načítavame z textového súboru (odstránime medzery a pod.)
$iptxt = trim($iptxt);
// jednoduchou podmienkou zistíme, či k je táto ipčka zablokovaná
if($ip == $iptxt)
{
// a ak je tak ešte návštevníkovi vypíšeme text o tom, že má
zablokovanú ip adresu
echo $sprava;
// a následne ukončíme skript
exit;
}
}
}


Na začiatku sme si nadefinovali správu, ktorú vypíše skript blokovanej ipčke. Potom si načítame
súbor ipky.txt s módom r, ktorý nám zabezpečí načítanie súboru. Nadefinujeme si funkciu blok_ip.
V tejto funkcii si v prvom rade určíme globálne premenné pomocou funkcie global. Následne si
načítame všetky ipčky pomocou cyklu while v ktorom si za pomoci funkcie fgets načítame ipčku za
ipčkou. Orežeme vstup od čistých znakov (medzier a pod.) a prejdeme na overenie ip adries.
Ak sa adresa v zozname nenachádza, nič sa nedeje a normálne pokračujeme v načítavaní
stránky. Ak sa však nachádza, vypíšeme správu a ukončíme beh skriptu aby nedošlo k načítaniu
stránky.

index.php
Tento súbor je vlastne vytvorený ako príklad vašej stránky. Teda vždy tento kód si pekne pridajte
do každej stránky, v ktorej chcete ip bloker použiť. Dobrým spôsobom by bolo dať si tento kód do
ďalšieho súboru a ten includovať do svojich stránok.

// zistíme aktuálnu ip adresu návštevníka
$ip = $_SERVER['REMOTE_ADDR'];

// pripojíme do skriptu nami nadefinovanú funkciu
include("bloker.php");

// zavoláme si funkciu na zablokovanie ip adresy
blok_ip($ip);


Na tomto kóde nie je čo vysvetľovať keďže som ho vysvetlil už v prvej verzii blokeru.

Nakoniec vám ešte dám jednu radu. V textovom súbore zachovávajte štandard, teda jedna ip
adresa jeden riadok.
Kompletný skript si môžete stiahnuť tu.

To je nadnes všetko, ak máte otázky, píšte ich dolu do diskusie.
Prajem všetkým príjemný deň.

Rastislav Turek // lammer.sk

Neprehliadnite: