Tutorials
IP blokkade
Met deze tutorial leer ik je om ip adressen te blokkeren (met admin).
Pagina 1
De MySQL tabel
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:
<?
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` )
);
?>
Maak eerst de volgende tabel aan in je database:
<?
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` )
);
?>
Pagina 2
De admin
In stap 1 hebben we dus een MySQL tabel aangemaakt waar de ip adressen van de geblockte ip adressen in komen te staan. Nu maken we een formulier waar we de ip adressen mee kunnen gaan blocken. Maar natuurlijk maken we eerst een database connectie en defineren we de tabel naam. Hieronder een heel script zeg maar, maar ik leg verder alles uit met de comment tags die je bij elke gebeurtenis ziet staan.
<?
//-- eerst maken we dus de database connectie
$mysqluser = "mysql_user";
$mysqlpass = "mysql_pass";
$mysqlhost = "localhost";
$mysqldbdb = "mysql_database_naam";
if (!@mysql_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>";
}
}
?>
Voor een voorbeeld kun je kijken op :
www.phphulp.nl/voorbeeld/ipblock.php
<?
//-- eerst maken we dus de database connectie
$mysqluser = "mysql_user";
$mysqlpass = "mysql_pass";
$mysqlhost = "localhost";
$mysqldbdb = "mysql_database_naam";
if (!@mysql_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>";
}
}
?>
Voor een voorbeeld kun je kijken op :
www.phphulp.nl/voorbeeld/ipblock.php
Pagina 3
Bekijk of iemand geblokkeerd is
Om te kijken of iemand geblokt is gebruik je het volgende scriptje. Het is verstandig om op elke pagina dit bestandje te requiren. Dus op elke pagina:
<?
require("block.php"); //-- bijvoorbeeld als je dit scriptje block.php hebt genoemd.
?>
<?
//-- eerst maken we dus de database connectie
$mysqluser = "mysql_user";
$mysqlpass = "mysql_pass";
$mysqlhost = "localhost";
$mysqldbdb = "mysql_database_naam";
if (!@mysql_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();
}
?>
Of het echt effectief is weet ik niet.. Je kunt namelijk altijd via een proxy internetten. De meeste mensen weten dit ook wel en weten ook dat ze die moeten gebruiken als ze eenmaal geblockt zijn op een website. Weet ook zeker dat je niet een proxy adres blokkeerd. Hiermee block je meestal een grote groep mensen.
<?
require("block.php"); //-- bijvoorbeeld als je dit scriptje block.php hebt genoemd.
?>
<?
//-- eerst maken we dus de database connectie
$mysqluser = "mysql_user";
$mysqlpass = "mysql_pass";
$mysqlhost = "localhost";
$mysqldbdb = "mysql_database_naam";
if (!@mysql_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();
}
?>
Of het echt effectief is weet ik niet.. Je kunt namelijk altijd via een proxy internetten. De meeste mensen weten dit ook wel en weten ook dat ze die moeten gebruiken als ze eenmaal geblockt zijn op een website. Weet ook zeker dat je niet een proxy adres blokkeerd. Hiermee block je meestal een grote groep mensen.
Reacties
0