Určite vás bude zaujímať osoba alebo skupina osôb, ktorá v nejakom smere škodí vašej stránke. Najčastejšie to býva prostredníctvom písania hlúpych komentárov k článkom alebo do diskusií.
PHP - blokovanie ip adresy(BAN)
PHP - blokovanie ip adresy(BAN)
Väčšinou ide o ľudí s menším IQ alebo takých čo si o sebe myslia viac ako by mali. Väčšinou sú to ľudia od 11 do 16 rokov, ktorí sa zo sebou nevyrovnali duševne. Čím starší to robia tým blbší zostanú v budúcnosti. Takýmto osobám musíte prístup na stránky zamedziť. Najlepším spôsobom aký je bude pravdepodobne blokovanie ip adresy. Ani tento spôsob však nieje 100%, pretože mnohí ľudia vlastnia dynamickú IP adresu čo znamená, že sa mení v určitom nepravidelnom časovom intervale. Takýmto osobám zabránite prístup miminálne na 1 deň čo nepredstavuje veľmi dobrú správu a však existujú aj ľudia, ktorí majú statické IP adresy a tí sa už nebudú brániť :-). Jednoducho ak dostane niekto takýto BAN, tak vašu stránku už nikdy zo zablokovanej adresy nenavštívi.
Príprava databázy
Prvé čo budeme potrebovať bude databáza kde budeme ukladať IP adresy. Najlepšie čo môžeme urobiť je jednoduchá tabuľka.
CREATE TABLE ban ( id INT UNSIGNED NOT NULL auto_increment, ip CHAR(15) NOT NULL, PRIMARY KEY(id) );
Vysvetlovať toho asi veľa nebudem, pretože jediné čo je v databáze podstatné je IP adresa. Časom si môžete vytvoriť do databázy aj nejaké prídavky ako napr. dátum blokovania ip adresy alebo popis blokovania ip adresy. Týmto sa však dnes zaoberať nebudem ale budem sa snažiť poukázať na to ako IP adresy blokovať.
Odkiaľ a ako získam IP adresu?
Jednuducho. Stačí na to jedna premenná alebo superglobálne pole. Skôr to druhé lebo je to novšie a dalo by sa povedať aj vo všetkých smeroch lepšie.
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Hotovo, IP adresa je vypísaná. V článku predpokladám, že si IP adresu už do databázy alebo niekde inde archivujete sami alebo aspoň v budúcnosti budete. Ak sa vám IP adresa vkladá ku každému komentáru alebo podobne vždy máte záznam odkiaľ bol komentár odoslaný. Ak bude odporovať vaším normám na stránke stačí ak si vytvoríte formulár kde budete ukladať do databázy IP adresu pre blokovanie. Bližšie o tom formuláry sa dozviete nižšie v článku.
Ideme blokovať
Tento skript bude v podstate jednoduchý príklad na to ako IP adresu zablokovať, takže nečakajte divy.
<?php #index.php
require_once('mysql.php'); // pripojenie do databázy
$sql = mysql_query("SELECT ip FROM ban");
while($zaznam = mysql_fetch_object($sql)){
if($_SERVER['REMOTE_ADDR'] == $zaznam->ip){
die("BAN IP - ".$zaznam->ip."n");
}
}
echo "<p>Som rad, ze som nedostal BAN!</p>n";
?>
Opäť upozorním ako vždy na funkciu require_once('mysql.php'). Súbor mysql.php len simuluje súbor, ktorý nám zabezpečí pripojenie do databázy podľa článku PHP pre začiatočníkov - Databázy, 11.diel. Pokračovanie skriptu spôsobí, že po načítaní ip adries s databáze cyklom while skript ukončí svoju činnosť pre tých, ktorí sú v tej databáze zapísaní. To znamená, že ak dám BAN ip adrese 127.0.0.1, tak sa jej vypíše text BAN IP - 127.0.0.1. Naopak osoba, ktorá má IP adresu 127.0.0.2 v databáze nieje zapísaná, tak sa jej vypíše text Som rad, ze som nedostal BAN!. Skript sa neukončí ale bude pokračovať do svojho konca.
Ako ale blokovať IP?
Predpokladám, že skúsenejší užívatelia už budú vedieť ako zadať BAN. Jednoducho pomocou phpMyAdmin-a alebo pomocou vytvoreného formuláru. Takýto formulár môžeme vytvoriť nasledovne.
<?php #ban.php
require_once('mysql.php'); // pripojenie do databázy
if(isset($_POST['zablokuj'])){
if(empty($_POST['ip'])){
$ip = FALSE;
} else {
$ip = $_POST['ip'];
}
if($ip){
$sql = mysql_query("INSERT INTO ban(ip) VALUES('$ip')");
if($sql){
echo "<p>IP adresa <strong>$ip</strong> bola úspeąne <strong>zablokovaná</strong>!</p>n";
} else {
echo "<p>Nastala chyba pri blokovaní IP adresy!</p>n";
}
} else {
echo "<p>Nezadali ste IP adresu!</p>n";
}
} elseif(isset($_POST['odblokuj'])){
if(empty($_POST['ip'])){
$ip = FALSE;
} else {
$ip = $_POST['ip'];
}
if($ip){
$sql = mysql_query("DELETE FROM ban WHERE ip='$ip'");
if($sql){
echo "<p>IP adresa <strong>$ip</strong> bola úspeąne <strong>odblokovaná</strong>!</p>n";
} else {
echo "<p>Nastala chyba pri blokovaní IP adresy!</p>n";
}
} else {
echo "<p>Nezadali ste IP adresu!</p>n";
}
} else {
echo "<form action='{$_SERVER['PHP_SELF']}' method='post'>";
echo " <fieldset><legend>Zablokovanie IP adresy</legend>n";
echo " IP adresa <input name='ip' type='text' /><br />n";
echo " <input name='zablokuj' type='submit' value='Zablokuj IP adresu' />n";
echo " <input name='odblokuj' type='submit' value='Odblokuj IP adresu' />n";
echo " </fieldset>n";
echo "</form>n";
}
?>
Pomocou toho skriptu budete mať kontrolu nad blokovaním IP adries ale aj nad odlokovaním IP adries. Najlepšie je si však tento skript vložiť do nejakej zabezpečnej zóny ako je napr. administrácia vášho systému.
Záver
Takéto blokovanie IP adresy bude najlepšie využiť všade tam kde niekto bude škodiť. Dúfam, že vám tieto dnešné skripty pomohli.


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre
<?php
function tit_get_ip() {
/* THIS FUNCTION GET PROXI AND REAL IP */
if ( !is_null($_SERVER["HTTP_X_FORWARDED_FOR"]) )
{
$ip["proxi"] = $_SERVER["REMOTE_ADDR"];
$ip["real"] = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else
{
$ip["real"] = $_SERVER["REMOTE_ADDR"];
}
echo(' '.$ip["real"].'<BR>PROXI IP : '.$ip["proxi"] );
}
echo tit_get_ip();
?>
?