Hallo,
ich habe ein Skript, mit welchem ich IP-Adressen von Besuchern sperren möchte. Ich habe dazu IP-Adressen und IP-Adressbereiche in einer Datenbank gespeichert. Die IP-Adressen können den Status 'locked' oder auch 'unlocked' besitzen. Dann gibt es im System (im Gesamtskript) zwei Modi, einmal 'Unbekannte IP-Adressen sperren' und 'Unbekannte IP-Adressen zulassen'. Im Modus 'Unbekannte IP-Adressen sperren' sollen alle geblockt werden, die nicht in der Liste sind, und auch die, welche vorhanden sind aber auf 'locked' stehen. In meinem folgenden Skript lasse ich statt einer Aktion erst einmal nur mit echo 'Forbidden' ausgeben. Das wird jedoch auch dann ausgegeben, wenn die IP-Adresse oder der IP-Adressbereich in der Liste ist, und auf unlocked steht. Was mache ich falsch:
ich habe ein Skript, mit welchem ich IP-Adressen von Besuchern sperren möchte. Ich habe dazu IP-Adressen und IP-Adressbereiche in einer Datenbank gespeichert. Die IP-Adressen können den Status 'locked' oder auch 'unlocked' besitzen. Dann gibt es im System (im Gesamtskript) zwei Modi, einmal 'Unbekannte IP-Adressen sperren' und 'Unbekannte IP-Adressen zulassen'. Im Modus 'Unbekannte IP-Adressen sperren' sollen alle geblockt werden, die nicht in der Liste sind, und auch die, welche vorhanden sind aber auf 'locked' stehen. In meinem folgenden Skript lasse ich statt einer Aktion erst einmal nur mit echo 'Forbidden' ausgeben. Das wird jedoch auch dann ausgegeben, wenn die IP-Adresse oder der IP-Adressbereich in der Liste ist, und auf unlocked steht. Was mache ich falsch:
PHP:
elseif ($array1[firewall_status] == "deny_unknown") {
$this_ip = $_SERVER["REMOTE_ADDR"];
$this_ip_long = ip2long ($this_ip);
$query8 = mysql_query ("SELECT `ip_address_one`, `ip_address_two` FROM `$dbtable13` WHERE `ip_address_type` = 'ip_address_range' AND `ip_address_status` = 'unlocked'");
while ($ip = mysql_fetch_object ($query8)) {
if (($this_ip_long >= ip2long ($ip->ip_address_one)) && ($this_ip_long <= ip2long ($ip->ip_address_two))) {
if ($this_ip != $_SERVER["SERVER_ADDR"]) {
}
}
else {
echo "Forbidden";
}
}
$query9 = mysql_query ("SELECT `ip_address_one` FROM `$dbtable13` WHERE `ip_address_type` = 'ip_address' AND `ip_address_status` = 'unlocked'");
while ($ip2 = mysql_fetch_object ($query9)) {
if (($this_ip_long == ip2long ($ip2->ip_address_one))) {
if ($this_ip != $_SERVER["SERVER_ADDR"]) {
}
}
else {
echo "Forbidden";
}
}
}