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.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//-- 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