Archív Inet.sk Pôvodný autor: Rasťo Turek
11. 05. 2004 o 00:00 12515x

Ako na IP Bloker pre Vaše stránky: časť 1

Vítam Vás pri ďalšej časti seriálu „Ako na“. Dnes sa pozrieme na jednoduchý skript, ktorý dokáže ukladať IP adresu návštevníka a pomocou jednoduchého admina aj blokovať/povoľovať IP adresu. Nápad na tento skript mi vnukol pán Jozef Tkáčik, za čo mu ďakujem a naďalej Vás žiadam, aby ste písali nápady alebo vlastné problémy s témami, ktoré by mohli byť zaujímavé nielen pre Vás.
Ako na IP Bloker pre Vaše stránky: časť 1

Popis aplikácie
Aplikácia musí pozostávať z dvoch skriptov, a to z jedného, ktorý IP adresu získa a zapíše a druhého, ktorý zistí, či je IP adresa zablokovaná, alebo nie. My si teda vytvoríme dve funkcie. Ďalej potrebujeme skript na pripojenie k databáze. Tento skript som už rozoberal v predošlých dieloch, takže ho dnes rozoberať nebudem. Ďalej je pre nás dosť dôležité si vytvoriť admina, ktorý dokáže zobraziť všetky IP adresy a bude môcť pracovať s údajmi v databáze. Teda potrebujeme tri základné úkony: zmazať záznam, zablokovať IP adresu a odblokovať IP adresu. Aby nám na stránke nevznikol výpis dlhý až do Kanady :-), budeme si zapisovať pri rovnakých IP adresách len počet prístupov a dátum a čas posledného prístupu.

Návrh aplikácie
Aplikácia bude mať štyri súbory. Prvým bude samozrejme index.php, kde si zavoláme funkcie na zápis a na blokovanie IP adresy, ďalej si pripravíme súbor funkcie.php, kde si nadefinujeme obe funkcie pre zistenie a následné zapísanie IP adresy návštevníka do mysql databázi a samozrejme aj funkcie na zablokovanie/odblokovanie IP adresy. No posledným dôležitým súborom je admin.php. Tu si môžete po zadaní mena a hesla zistiť, z akých IP adries sa k Vám návštevníci pripájajú a následne si môžete vybrať, či chcete tú ktorú zablokovať/odblokovať alebo vymazať. Štvrtým súborom je len skript na pripojenie k databázi a ten úž poznáte z predošlých článkov a nazveme si ho config.php. Aplikácia je navrhnutá tak, aby ste do stránky museli pripájať tri riadky, aby ste nemuseli meniť svoje hotové stránky. Takže poďme si pomaličky rozobrať všetky skripty podľa dôležitosti.

Začíname
V prvom rade si navrhneme databázu. Vytvoríme si tabuľku s názvom ip. V tabuľke potrebujeme stĺpce id, ip, datum, zablokovanie, pristupov. Stĺpec id budeme využívať na určenie v tabuľke, ip na zápis adresy ip, datum na zápis dátumu a času posledného prístupu na stránky, zablokovanie pre zablokovanie/odblokovanie ip adresy a nakoniec počet prístupov z jednotlivých ip adries. Takže prakticky bude návrh SQL tabuľky ip takýto:

CREATE TABLE ip (
  id int(8) NOT NULL auto_increment,
  ip varchar(50) NOT NULL default '',
  datum datetime NOT NULL default '0000-00-00 00:00:00',
  zablokovane char(3) NOT NULL default 'nie',
  pristupov int(10) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Myslím že už nie je potrebné vysvetľovať návrh tejto tabuľky. Ďalej si zapíšeme skript pre pripojenie k mysql a nazveme si ho config.php:

<?php
if (!@$spojenie = MySQL_Connect("localhost", "meno", "heslo")):
 echo "Nepodarilo sa pripojit k databazi!";
 die;
endif;
if (!@$select = MySQL_Select_Db("databaza")):
 echo "Chyba pri vybere databaze!";
 die;
endif;
?>

Keď už máme navrhnutú tabuľku, môžeme pristúpiť k návrhu funkcií pre načítanie/zapísanie IP adresy a bloker IP.

Poznámka: Keďže v diskusii viackrát zazneli požiadavky, aby som skripty písal pre register_globals=Off, tak teraz nájdete všetky skripty upravené do tejto podoby! Budú funkčné na verzii php 4.0.0 a vyššej.

Funkcia na zistenie/zapísanie IP adresy
Najskôr Vám celú funkciu predostriem tak, ako bude vyzerať vo finálnej podobe a potom si ju spolu prejdeme.

// vytvoríme si funkciu na zapísanie ip adresy návštevníka
function write_ip($ip)
{
 // vytvoríme si požiadavku na mysql aby nám vyhľadala ip adresu ak taká už existuje
 $sql = mysql_query("SELECT * FROM ip WHERE ip LIKE \"$ip\"");
 // nadefinujeme si dátum a čas pre posledné prihlásenie
 $date = date("Y-m-d H:i:s");
 // zistíme koľko záznamov už máme v databázi (použijeme pre vytvorenie podmienky)
 $wo  = mysql_num_rows($sql);
 // vytiahneme si jeden riadok z databázi
 $zaznam = mysql_fetch_object($sql);

 // vytvoríme si podmienku, ak je riadkov viac ako 0
 if($wo>0)
 {
  // upravíme riadok a doplníme ho prístupov + 1 a doplníme nový dátum
  Mysql_Query("UPDATE ip SET pristupov=$zaznam->pristupov + 1, datum='$date' WHERE id='$zaznam->id'");
 }
 else
 {
  // ak je počet vrátených riadkov rovných nule, doplníme nový riadok do databázi
  Mysql_Query("INSERT INTO ip VALUES ('', '$ip', '$date', 'nie', '1')");
 }
}

Ak ste si prezreli celú funkciu podrobne od začiatku až do konca, nemal by byť pre Vás najmenší problém ju pochopiť. Do funkcie s názvom write_ip musíme pre zavolanie vložiť IP adresu návštevníka. Ďalej si vytvoríme požiadavku na mysql, aby nám hľadalo IP adresu v tabuľke, nadefinujeme si dátum a čas posledného prihlásenia návštevníka stránok. Aby sme si mohli vytvoriť podmienku, ktorá bude rozhodovať, či vytvoriť nový riadok v tabuľke, alebo zapísať už do existujúceho riadku, musíme si načítať počet vrátených riadkov v tabuľke. Je jasné, že u nás nemôže vzniknúť viac ako jeden riadok s jednou IP adresou, keďže zapisujeme k už existujúcej IP-čke len počet prístupov. No a nakoniec si vytiahneme dáta, aby sme ich mohli zapisovať. Ako som už spomínal, vytvoríme si podmienku na zistenie, koľko riadkov nám požiadavka vrátila. Ak je riadkov viac ako nula, teda jeden, tak ho upravíme a to spôsobom, že prístupy zvýšime o jedna a dátum prepíšeme aktuálnym dátumom a časom. Nemeníme však vlastnosti blokovania IP adresy, aby sa nestalo, že by sa dotyčný automaticky pri ďalšej návšteve odblokoval. Ak je vrátený počet riadkov rovný nule, zapíšeme si nový riadok do tabuľky, a to tak, že určíme všetko okrem stĺpca id. Teraz už máme kompletný skript na zapisovanie zisťovanie/zapisovanie IP adresy. Myslím, že táto časť by Vám mala byť úplne jasná, keďže je to dosť jednoduché.
Teraz sa pozrieme na funkciu, ktorá bude vedieť zablokovať aktuálnu IP adresu, ktorú si určíme.

Bloker IP adresy
Ako pred chvíľkou si opäť zobrazíme celú funkciu a potom si ju vysvetlíme.

$sprava= "Vaša IP adresa bola zablokovaná. Prosím kontaktujte administrátora!";
// vytvoríme si funkciu na zablokovanie ip adresy
function blok_ip($ip)
{
 // vytvoríme si požiadavku na mysql aby nám vyhľadala ip adresu ak taká už existuje
 $sql = mysql_query("SELECT * FROM ip WHERE ip LIKE \"$ip\"");
 // vytiahneme si jeden riadok z databázi
 $zaznam = mysql_fetch_object($sql);
 // jednoduchou podmienkou zistíme, či k je táto ipčka zablokovaná
 if($zaznam->zablokovane=="ano")
 {
 //  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;
 }
}

Funkcii block_ip musíme rovnako ako predošlej zadať IP adresu návštevníka, aby sme s ňou následne mohli pracovať. Rovnako ako predtým si vytvoríme požiadavku na mysql na vyhľadanie zadanej IP adresy. Tentoraz už nepotrebujeme nič zapisovať, teda si len vytiahneme vrátené dáta a konkrétne nás zaujíma len to, či je IP adresa zablokovaná alebo nie. Takže si vytvoríme podmienku na overenie zablokovanej IP adresy. Teda ak stĺpec zablokovane má hodnotu áno, ukončíme prevádzanie všetkých ďalších skriptov a načítavanie stránky zastavíme. Ešte pred tým však vypíšeme správu používateľovi, aby si nemyslel, že stránky nie sú v prevádzke, alebo aby sám nehľadal chybu v pripojení.

Na dnes je to všetko. Nabudúce sa pozrieme na administračný skript a samozrejme, že Vám dám celý príklad na stiahnutie. Dúfam, že táto časť bola dostatočne jednoduchá a že sa Vám skript páči. Ešte raz Vás chcem požiadať, aby ste mi písali svoje problémy s programovaním v php, poprípade vhodné podnety na články. Rád Vám však pomôžem aj mimo stránok www.inet.sk a teda môžete sa na mňa obracať aj s osobnými problémami v programovaní. Píšte na maily support@lammer.sk alebo turek@inet.sk.

Rastislav Turek // lammer.sk

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies