Codeschnipsel - MySQL IP Sperre Funktion


Heute zeige ich euch wie man eine MySQL IP Sperre realisiert:

Als erstes braucht ihr eine MySQL Verbindung, falls euer Script keine Aufbaut benutzt diese:
"connect.inc.php"

Code:
<? $host = "localhost"; $username = ""; $passwort = ""; $datenbank = "";   @MYSQL_CONNECT($host, $username, $passwort) or die ("MySQL-Login fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); @MYSQL_SELECT_DB($datenbank) or die ("Verbindung zur Datenbank fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); ?>

Da wir die Verbindung aufgebaut haben fügen wir folgendes Dump in die Datenbank ein:
"dump.sql"

Code:
CREATE TABLE `ipsperrepas` ( `IP` varchar(20) NOT NULL default '', `TIME` int(12) NOT NULL default '0', PRIMARY KEY (`IP`) ) ENGINE=MyISAM;

Ist das gemacht kommen wir zur eigentlichen Funktion:
"misfpas.inc.php"

Code:
<? ########################################################################################################################### # MySQL Ip Sperre Funktion by PA-S.de ########################################################################################################################### # MySQL Ip Sperre Funktion V.1.0 by PA-S.de # Copyright 2003-2006 PA-S.de # Script Url: www.pa-s.de # Kontakt: kontakt [@] pa-s [.] de # Dieser unsichtbare Verweis darf nicht entfernt werden! ###########################################################################################################################   // falls noch keine Verbindung zur Datenbank hergestellt wurde: require_once("connect.inc.php");   // Functions by PA-S.de function ipsperrepas($ip){ // Einstellungen # Stunden $s = "0"; # Minuten $m = "0"; # Sekunden $i = "10";   // Ende Einstellungen $pas = $s * 3600 + $m * 60 + $i; $zeit = time(); // Ende Variablen   // Optionale Einstellungen # Optional alle älteren Einträge auch sofort löschen ipsperrepasdelold($pas); # / // Ende Optionale Einstellungen // Code $result = @mysql_query("select * from ipsperrepas WHERE IP='$ip' LIMIT 1") or die ("MySQL-QUERY fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); if (@mysql_num_rows($result)) { $row=mysql_fetch_array($result); $dbtime = $row['TIME']; $heuri = $zeit - $dbtime; if($heuri > $pas){ @mysql_query("DELETE FROM ipsperrepas WHERE IP = '$ip'") or die ("MySQL-DELETE fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); @mysql_query("INSERT INTO ipsperrepas (IP, TIME) VALUES ('$ip', '$zeit')") or die ("MySQL-INSERT fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); return true; }else{ return false; }}else{ @mysql_query("INSERT INTO ipsperrepas (IP, TIME) VALUES ('$ip', '$zeit')") or die ("MySQL-INSERT fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); return true; }}   function ipsperrepasdelold ($pas){ $zeit = time(); $result = @mysql_query("select * from ipsperrepas") or die ("MySQL-Abfrage fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); if (@mysql_num_rows($result)) { while($row=mysql_fetch_array($result)) { $ip = $row['IP']; $dbtime = $row['TIME']; $heuri = $zeit - $dbtime; if($heuri > $pas){ @mysql_query("DELETE FROM ipsperrepas WHERE IP = '$ip' LIMIT 1") or die ("MySQL-Abfrage fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); }}}} // Ende Functions by PA-S.de ?>

Jetzt haben wir die Funktion, nun können wir diese Funktion aufrufen,
um die Abfrage in eurem Script einzubauen fügt Ihr folgenden Code in eure gewünschte Stelle:

Code:
<? // IP Check if(ipsperrepas($_SERVER['REMOTE_ADDR'])){ # Ihre Aktion wenn IP-Sperre nicht atkiv   }else{ # Ihre Aktion wenn IP-Sperre aktiv   } // Ende IP Check ?>

Falls ihr noch kein Script habt könnt Ihr die Funktion mit folgenden Beispiel einfach testen:
"demo.php"

Code:
<? // Einbinden der Funktion + Verbindungsaufbau require_once("misfpas.inc.php");   // IP Check if(ipsperrepas($_SERVER['REMOTE_ADDR'])){ # Ihre Aktion wenn IP-Sperre nicht atkiv echo 'IP-Sperre nicht aktiv :-D.<br />Bitte rufen Sie diese Seite nochmal auf [F5].'; }else{ # Ihre Aktion wenn IP-Sperre aktiv echo 'IP-Sperre aktiv.<br /> Tja das wird wohl nichts :-P.'; } // Ende IP Check ?>

Demonstration: Hier klicken
Download des Archivs: Hier klicken

Beachten Sie: Wir übernehmen keinerlei Haftung für irgendwelche Schäden, Ausfälle oder sonstigen Geschehnissen.
Alle Angaben sind ohne Gewähr, Sie handeln auf eigenes Risiko!
Alle genannten Soft- und Hardwarebezeichnungen sowie Markennamen sind Eigentum ihrer jeweiligen Inhaber und unterliegen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz.
Alle Rechte vorbehalten