Welkom gast! Aanmelden Registreren


Waardering:
  • 0 stemmen - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
[TUT] IP Ban / IP Blokkade
#1
Heeee RetroNetters,

Ik ga jullie leren hoe je een IP BAN op je website moet toevoegen. De geblockte IP adressen worden opgeslagen in een MySQL database.

Maak eerst de volgende tabel aan in je database:
Code:
<?
CREATE TABLE `ip_blocks` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`ip_adres` VARCHAR( 20 ) NOT NULL ,
`block_datum` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
?>


Nu maken we een formulier waar de geblockte mensen op komen!
Code:
<?
    //-- eerst maken we dus de database connectie
    $mysqluser = "mysql_user";
    $mysqlpass = "mysql_pass";
    $mysqlhost = "localhost";
    $mysqldbdb = "mysql_database_naam";

    if ([email protected]_select_db($mysqldbdb, @mysql_connect($mysqlhost, $mysqluser, $mysqlpass)))
    {
        echo "<b>error</b><p>";
        echo "Er kon geen database connectie worden gemaakt.";
        exit();
    }
    
    unset($mysqluser);
    unset($mysqlpass);
    unset($mysqlhost);
    unset($mysqldbdb);
    
    //-- defineer tabelnaam
    $table = "ip_blocks";
    
    //-- als de var $ip niet geset is, laat dan het formulier zien of voeg ip toe in db
    if (!$HTTP_GET_VARS["ip"])
    {
        //-- bekijk of het formulier verzonden is en of er een IP adres is opgegeven
        if ($HTTP_POST_VARS["submit"] && $HTTP_POST_VARS["ip_adres"])
        {
            //-- probeer het ingevoerde adres uit de database te halen
            //-- zo kunnen we kijken of het er al in staat of niet...
            $checksql = "SELECT id FROM $table WHERE ip_adres = '$HTTP_POST_VARS[ip_adres]'";
            $checkres = mysql_query($checksql);
            
            //-- bekijk of er een resultaat is
            if (mysql_num_rows($checkres) >= 1)
            {
                $error = "bestaat";
            }
            //-- als er geen resultaat is ga dan verder
            else
            {
                //-- zet de huidige datum (syntax voorbeeld: 02.09.2003)
                $block_datum = date("d.m.Y");
                
                //-- zet het IP adres en de datum in de database
                $sql = "INSERT INTO $table (id, ip_adres, block_datum) VALUES ('', '$HTTP_POST_VARS[ip_adres]', '$block_datum')";
                $res = mysql_query($sql);
                
                //-- kijk of het goed is gegaan
                if ($res)
                    echo "IP adres $HTTP_POST_VARS[ip_adres] wordt vanaf nu geblokkeerd.<p>Klik <a href=\"$PHP_SELF\">hier</a> voor het formulier.";
                //-- als het niet goed is gegaan
                else
                    echo "IP adres $HTTP_POST_VARS[ip_adres] wordt NIET geblokkeerd.<p>Klik <a href=\"$PHP_SELF\">hier</a> voor het formulier.";
            }
        }
        //-- is het formulier niet verstuurd of is er een "$error", laat dan het formulier zien
        if (!$HTTP_POST_VARS["submit"] || $error)
        {
            //-- als $error geset is
            if ($error)
                echo "Het IP adres <b>$HTTP_POST_VARS[ip_adres]</b> is al geblokkeerd.<p>";
            
            echo "Klik <a href=\"$PHP_SELF?ip=all\">hier</a> voor alle geblokkeerde IP adressen<p>";
            
            //-- het formulier moet 'gepost' worden en het moet naar zichzelf ($PHP_SELF verwijzen)
            echo "<form method=\"post\" action=\"$PHP_SELF\">";
            echo "<B>Ip adres:</b> <input type=\"text\" maxlength=\"20\" name=\"ip_adres\" value=\"$HTTP_POST_VARS[ip_adres]\"><br>";
            echo "<input type=\"submit\" name=\"submit\" value=\"blokkeer\">";
            echo "</form>";
        }
    }
    //-- als $ip wel geset is, laat dan alle geblockte ip adressen zien
    else
    {
        //-- als er op een verwijder linkje is geklikt:
        if ($HTTP_GET_VARS["del"])
        {
            //-- verwijder het ip adres uit de database
            $sql = "DELETE FROM $table WHERE id = '$HTTP_GET_VARS[del]'";
            $res = mysql_query($sql);
            
            //-- kijk of het allemaal goed is gegaan
            if ($res)
                echo "Het IP adres is succesvol uit de database verwijderd.<p>Klik <a href=\"$PHP_SELF?ip=all\">hier</a> voor de lijst.";
            //-- als het niet goed is gegaan geef de volgende melding
            else
                echo "Het IP adres is niet uit de database verwijderd.<p>Klik <a href=\"$PHP_SELF?ip=all\">hier</a> voor de lijst.";
        }
        //-- laat de lijst zien
        else
        {
            echo "Klik <a href=\"$PHP_SELF\">hier</a> om een IP adres te blokkeren.<p>";
            
            //-- haal alle ip adressen uit de db
            $sql = "SELECT id,ip_adres,block_datum FROM $table ORDER BY id DESC";
            $res = mysql_query($sql);
            
            //-- maak een HTML tabel
            echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\" bordercolor=\"#000000\">";
            echo "<tr><td width=\"100\"><b>Ip adres</b></td><td><b>Datum blokkade</b></td><td>Verwijderen</td></tr>";
            
            //-- bekijk of er ip adressen in de bloklijst staan
            if (mysql_num_rows($res) >= 1)
            {
                //-- loop door de resultaten
                while ($row = mysql_fetch_array($res))
                {
                    echo "<tr><td>$row[ip_adres]</td><td>$row[block_datum]</td><td><a href=\"$PHP_SELF?ip=all&del=$row[id]\">del</a></td></tr>";
                }
            }
            //-- als er geen geblokkerde ip adressen zijn
            else
            {
                echo "<tr><td colspan=\"3\">Er zijn nog geen geblokkeerde ip adressen.</td></tr>";
            }
            
            echo "</table>";
        }
    }
?>


Als je wilt zien of iemand geblokt is, is het handig om 't te requiren op elke page:
Code:
<?
    require("block.php"); //-- bijvoorbeeld als je dit scriptje block.php hebt genoemd.
?>

Code:
<?
    //-- eerst maken we dus de database connectie
    $mysqluser = "mysql_user";
    $mysqlpass = "mysql_pass";
    $mysqlhost = "localhost";
    $mysqldbdb = "mysql_database_naam";
    
    if ([email protected]_select_db($mysqldbdb, @mysql_connect($mysqlhost, $mysqluser, $mysqlpass)))
    {
        echo "<b>error</b><p>";
        echo "Er kon geen database connectie worden gemaakt.";
        exit();
    }
    
    unset($mysqluser);
    unset($mysqlpass);
    unset($mysqlhost);
    unset($mysqldbdb);
    
    //-- defineer tabelnaam
    $table = "ip_blocks";
    
    //-- zet het IP adres van de bezoeker
    $ipadres = $REMOTE_ADDR;
    
    //-- bekijk de database of het IP adres ergens gevonden is
    //-- dan heeft de bezoeker namelijk niet het recht om de
    //-- pagina te bekijken..
    $sql = "SELECT id FROM $table WHERE ip_adres = '$ipadres'";
    $res = mysql_query($sql);
    
    //-- bekijk of er een resultaat is, zo niet, doe dan niets
    if (mysql_num_rows($res) >= 1)
    {
        //-- geef de block melding
        echo "Je bent geblokkeerd op deze website.";
        exit();
    }
    
?>


Credits:
- Bacardi- 50%
- Bas 50%
null
 
#2

Bedankt Bigsmile

 
#3
Mooie tutorial, en ook fijn om te gebruiken.
 
#4
Dankje, die zal ik sws gebruiken op een site.
 
#5
Mooie tutorial!
 
#6

Mooi, doe zo voort ! Tounge

 
#7
Dankje voor de credits.
 
#8
Vreselijke, vreselijke php-code.

Hierin zitten verschrikkelijk veel overbodige troep, zo veel standaard-fouten en noem maar op.. Ik word al misselijk als ik er naar kijk.
Morsmordre
 
#9

Werkt niet op Site met Windows 8 Style Wink
Of dit werkt gewoon niet wat ik denk dat zo is!!

( je gebruikt PHP in je database tabel code? )
maak van die tabel code eens gewoon dit :

Code:
CREATE TABLE `ip_blocks` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`ip_adres` VARCHAR( 20 ) NOT NULL ,
`block_datum` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
Alleen geregistreerde leden kunnen deze link zien. Registreer of log in om te bekijken.
 
#10
Hoe ban je dan iemand ?
 
  




Leden die dit momenteel bekijken: 1 gast(en)