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

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

V minulej časti sme si prebrali obe funkcie potrebné pre zistenie/zapísanie a zablokovanie IP adresy návštevníka Vašich stránok. Dnes sa pozrieme na skript admina a samozrejme aj index stránok. Nakoniec Vám ponúknem celý skript na stiahnutie.
Ako na IP Bloker pre Vaše stránky: časť 2

Skript Admina
Táto časť je prakticky alfou a omegou celej aplikácie. Keďže sa tu budú nastavovať citlivé údaje, je celý skript chránený menom a heslom admina. Skript pozostáva z troch častí podmienky. Najskôr si zobrazíme celý skript a potom si to celé vysvetlíme.

<?php
// pripojíme konfiguračný skript na pripojenie k databáze
include("config.php");

// nadefinuje si meno a heslo pre admina
$meno  = "meno"; // meno (login)
$heslo = "heslo"; // heslo (password)

// vytvoríme si podmienku pre overenie mena a hesla, ak je správna len jedna z položiek nepovolíme vstup
if($_POST['meno']==$meno && $_POST['heslo']==$heslo)
{
 // vytvoríme si požiadavku pre mysql aby načítala dáta z tabuľky ip
 $sql = mysql_query("SELECT * FROM ip");

 // vypíšeme do stránky tabuľku
 echo "<table border=\"1\">";
 // a samozrejme určíme hlavičku, aby sme vedeli čo čo znamená
 echo "<tr align=\"center\"><td><strong>Id</strong></td><td><strong>Ip adresa</strong></td><td><strong>Posledný prístup</strong></td><td><strong>Prístupov</strong></td><td><strong>
Zablokované</strong></td><td><strong>Zablokuj</strong></td><td><strong>
Zmaž</strong></td></tr>";
 // začneme prehľadávať celú tabuľku aby sme si mohli vypísať do stránky všetky záznamy
 while($zaznam = mysql_fetch_object($sql))
 {
  // začneme vypisovať všetky údaje z tabuľky do stránky
  echo "<tr align=\"center\"><td>$zaznam->id</td><td>$zaznam->ip</td><td>$zaznam->datum</td><td>$zaznam->pristupov</td><td>$zaznam->zablokovane</td>";
  // vytvoríme si podmienku, aby nám zmenilo ponuku na zablokovanie/odblokovanie
  if($zaznam->zablokovane=="nie")
  {
   // ak je podmienka splnená a ip adresa nie je zablokovaná
// povolíme jej zablokovanie
   echo "<td><a href=\"admin.php?op=zablokuj&id=$zaznam->id\">Zablokuj!</a></td>";
  }
  else
  {
   // ak splnená nie je, znamená to, že už je ip adresa zablokovaná
// a my povolíme jej odblokovanie
   echo "<td><a href=\"admin.php?op=odblokuj&id=$zaznam->id\">Odblokuj!</a></td>";
  }
  // a ešte ak by sme chceli náhodou zmazať aj nejaký záznam s ip adresou
// (nepoznám logicky dôvod)
  echo "<td><a href=\"admin.php?op=zmaz&id=$zaznam->id\">Zmaz!</a></td></tr>";
 }
 // ukončíme vypísanie tabuľky
 echo "</table>";
}
/* aby sa nezobrazoval aj prihlasovací formulár, máme podmienku po nesplnení tej predošlej a tá nám
   zabezpečí, že ak je v riadku s adresou prenášaná premenná $op určíme to ako splnenie podmienky
*/
elseif($_GET['op'])
{
 // vytvoríme si pomocou rozšírenej podmienky if podmienku na zistenie a
// prevedenie určenej akcie
 switch($_GET['op'])
 {
  // ak má premenná $op hodnotu zablokuj, zablokujeme ip adresu
  case "zablokuj":
   // prevedieme si ip adresu
   $id = $_GET['id'];
   // a upravíme riadok (zmeníme stĺpec zablokovane z nie na ano)
   mysql_query("UPDATE ip SET zablokovane='ano' WHERE id='$id'");
   // vypíšeme text o úspešnosti akcie
   echo "Ip adresa bola zablokovaná!<br>\n";
   // a pridáme linku na opätovné prihlásenie
   echo "<a href=\"admin.php\">Prihlásiť znovu</a>";
  // zastavíme prevádzanie podmienky
  break;
  
  // ak má premenná $op hodnotu odblokuj, odblokujeme ip adresu
  case "odblokuj";
   // prevedieme si ip adresu
   $id = $_GET['id'];
   // a upravíme riadok (zmeníme stĺpec zablokovane z ano na nie)
   mysql_query("UPDATE ip SET zablokovane='nie' WHERE id='$id'");
   // vypíšeme text o úspešnosti akcie
   echo "Ip adresa bola odblokovaná!<br>\n";
   // a pridáme linku na opätovné prihlásenie
   echo "<a href=\"admin.php\">Prihlásiť znovu</a>";
  // zastavíme prevádzanie podmienky
  break;
  
  // ak má premenná $op hodnotu zmaz, zmažeme ip adresu
  case "zmaz";
   // prevedieme si ip adresu
   $id = $_GET['id'];
   // a odstránime riadok
   mysql_query("DELETE FROM ip WHERE id='$id'");
   // vypíšeme text o úspešnosti akcie
   echo "Ip adresa bola zmazaná!<br>\n";
   // a pridáme linku na opätovné prihlásenie
   echo "<a href=\"admin.php\">Prihlásiť znovu</a>";
  // zastavíme prevádzanie podmienky
  break;
 }
}
else
{
 /* Ak nebolo doteraz nič splnené, teda sme sa ešte len prihlásili po prvýkrát,
    alebo bolo zle zadané meno alebo heslo, vypíšeme do stránky formulár na prihlásenie
    tento formulár Vám už vysvetľovať nebudem, mali by ste ho zvládnuť bez pomoci
  */
 echo "<form name=\"login\" action=\"admin.php\" method=\"post\">";
 echo "Meno: <input type=\"text\" name=\"meno\"><br>\n";
 echo "Heslo: <input type=\"password\" name=\"heslo\"><br>\n";
 echo "<input type=\"submit\" name=\"prihlas\" value=\"Prihlas ma\">";
 echo "</form>";
}
?>

Takže ak si skript podrobne prezriete zistíte, že je podmienka rozvetvená do troch častí. Aby sa splnila prvá časť, je potrebné, aby bolo zadané meno a heslo a zodpovedalo nastaveniam. Druhá časť vyžaduje pre svoje splnenie mať v poli s url adresou určenú premennú op teda údaje prenesenú metódou GET. Ak nie je splnená ani jedna podmienka, jednoducho vypíšeme do stránky formulár na prihlásenie. Týmto formulárom začneme, keďže sa zobrazuje ako prvý.

Formulár pozostáva z troch polí, teda dvoch textových určených ako meno a heslo a jedného tlačidla pre odoslanie. Presnejšie údaje z formulára posielame metódou GET a zadávame tri premenné. Meno, heslo a tlačidlo. Tlačidlo vynecháme, pretože nebude potrebné. Ak sa aj meno a heslo zhodujú z určenými údajmi, splníme prvú podmienku a teda sa nám začne prevádzať.

Hneď na začiatku vidíme, že si vytvárame požiadavku na mysql, aby nám načítalo všetky údaje v tabuľke ip. Hneď po tom si vypisujeme do stránky hlavičku tabuľky a určenie prvého riadku. Pomocou podmienky prehľadáme a načítame všetky údaje z tabuľky. V mieste, kde vypisujeme, či je IP adresa zablokovaná alebo odblokovaná si vytvoríme jednoduchú podmienku, ktorá nám pri zablokovanej IP-čke dá na výber jej odblokovanie a pri odblokovanej nám ponúkne jej zablokovanie. Určite nám to zamedzí duplikovaniu záznamov a ďalej určite nám to zjednoduší orientáciu v záznamoch. Nakoniec ukončíme tabuľku.

V druhom kroku overujeme premennú op, v ktorej si budeme určovať, o akú akciu ide a teda či o zmazanie záznamu, zablokovanie alebo odblokovanie IP adresy. Teda spravíme si to tak, že pomocou príkazu switch rozšíreného if si určíme, o ktorú z operácií ide a vykonáme ju. Pri zablokovaní si upravíme riadok s vybranou id a zameníme stĺpec zablokovane na áno, čo bude pre náš blokovací skript znamenať zneprístupnenie stránky. Ak je operácia odblokovanie zmeníme stĺpec zablokovane na nie a pri operácií zmaž zmažeme vybraný riadok. Máme určené všetky operácie a teda máme hotový kompletný skript.

Ešte Vám ukážem ako si zavoláme funkcie teda ako vyzerá súbor index.php:

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

// pripojíme do skriptu nami nadefinované funkcie
include("funkcie.php");

// zavoláme si funkciu na zapísanie ip adresy
write_ip($ip);
// zavoláme si funkciu na zablokovanie ip adresy
blok_ip($ip);
?>
Tu bude vaša stránka

Takto bude vyzerať kompletná aplikácia na blokovanie IP adries. Myslím, že je jednoducho zapracovateľná do každého skriptu a je ľahko použiteľná kdekoľvek.

Výhody skriptu
Tento skript je dosť jednoduchý a ľahko ovládateľný, čiže by s ním nemali mať problémy ani začiatočníci. Ďalej veľkou výhodou skriptu je, že si ho môžete veľmi jednoducho poupravovať a doplniť o nové funkcie, poprípade bez problémov si ho upraviť a doplniť do vlastnej stránky. Skript som testoval pri záťaži 1800 ľudí v rozpätí asi 5 minút a bez problémov dokázal spracovávať všetky údaje, takže je minimálnou záťažou pre mysql ako i pre apache.

Nevýhody skriptu
Obrovskou nevýhodou je, že pri každej úprave sa musíte znovu nalogovať. Dá sa to bez problémov upraviť pomocou cookies poprípade ak si budete ukladať log do databázi a zrušíte ho po 15 minútach. Ďalšou nevýhodou je, že sa dá lognúť len jeden admin, teda skript je prispôsobený len pre určenie jedného mena a hesla. Aj toto je dosť jednoduchá záležitosť, napríklad si vytvoríte tabuľku s menami a heslami a vytvoríte si funkciu na prihlásenie. Ak bude človek prihlásený, uložíte hodnoty do cookies a bude ho automaticky prihlasovať po dobu x minút, poprípade kým nevypne okno prehliadača.

Smerovanie a ďalšie rozšírenie skriptu
Napadá mi hneď niekoľko rozšírení. Napríklad štatistika podľa IP adresy -  najčastejšie sa vyskytujúca IP-čka alebo tiež použitie doménových adries, ktoré by vám pomohli získať prehľad, o akú krajinu ide.

Ako som sľúbil už v prvej časti, dávam Vám celý skript na stiahnutie. Stačí kliknúť sem a stiahnete si celú aplikáciu aj s návrhom databáze.

Myslím že je toho nadnes dosť. Dúfam, že ste skript pochopili a že nevznikne u Vás žiadny problém. Ak áno, kontaktujte ma na maile  uvedenom nižšie. Nabudúce sa pozrieme na ďalší problém poprípade podnet, ktorý mi príde od Vás. Píšte aj naďalej podnety na články týkajúce sa php a mysql, rád sa na ne pozriem a skúsim o nich popísať niečo bližšie

Rastislav Turek // lammer.sk
turek@inet.sk
alebo support@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