IP Sperre

pl_90

Angesehenes Mitglied
Hallo,

Heute hab ich was richtig zu tun...
laugh.gif
biggrin.gif

Ich würde gerne wissen, wie ich eine IP Sperre für mein Script machen kann? Also so ne Zeit Sperre oder so ähnlich... MySQL Tabellen hab ich schon (ID, IP_ADRESSE)...

Thx Thx Thx...


Dawid
 
Du könntest es per if-Abfrage machen, hält aber nur solange die IP wirksam ist
 
ja, danke, das kann ich schon aber ich möchte so ne IP Zeit Sperre für 15 Min. oder so...
 
Ich würds so machen (Sorry für das "Quick&Dirty"
wink.gif
):

MySQL Tabelle:
- id
- ip
- host
- date

Funktionen:
- check()
- update()
- delete()
- insert()

Variablen:
- $ip = $_SERVER['REMOTE_ADDR'];
- $host = getHostByAddr($ip);
- $ban_time = 900; // 15 Minuten

"check()" holt sich 'date':
SELECT date FROM $tabelle WHERE ip=$ip AND host=$host
Anschließend berechnest du ob time()-$_banzeit größer ist als 'date' aus der Tabelle.
Wenn eine gültige IP besteht wird true zurückgegeben, andernfalls false.

"update()" rufst du nach einer Aktion auf, um das Feld 'date' auf den neuen Stand zu bringen:
UPDATE $tabelle SET time=time() WHERE ip=$ip AND host=$host

"delete()" löscht alle Beiträge wo 'date' kleiner ist als time()-$delete_time:
DELETE FROM $tabelle WHERE date<time()-$ban_time

"insert()" trägt neue ip ein:
INSERT INTO $tabelle (ip, host, date) VALUES ($ip, $host, time())

So könnte dein Script zB aussehen

CODE
<?php
// Bereich Sperren
if(check() == true) echo 'IP gesperrt.'; // IP vorhanden, Bereich also gesperrt.
else {

// weiter gehts

}
?>

<?php
// Nach einer Aktion
if(check() == true) update();
else insert();
?>


Hoffe, ich hab keine Fehler gemacht - bin seit 2 Tagen wach
wink.gif


Bei Fragen, fragen!

Gruß
carapau
 
Hallo Vielen Dank allen. Und dir Carapau besonders für deine Mühe.

Ich hab die Beiträge hier noch nicht gesehen und ich musste damit schnell fertig werden, darum habe ich versucht versucht und das hier bisschen gemacht...

QUOTE
function zeige_ip() {
if(getenv("HTTP_X_FORWARDED_FOR"))
$ip_adr = getenv("HTTP_X_FORWARDED_FOR");
else
$ip_adr = getenv("REMOTE_ADDR");
return $ip_adr;
}

$sperre = time()-900;
$zeit_jetzt = time();
$ip_adr = zeige_ip();

$pruef_ip = mysql_query("SELECT IP_ADRESSE FROM TABELLE WHERE IP_ADRESSE='$ip_adr'");

mysql_query("DELETE FROM TABELLE WHERE SPERRE_ZEIT<$sperre");

if(@mysql_fetch_array($pruef_ip)) {
$fehlermeldung = "Bla Bla IP Gesperrt Blabla";
}

...
// Formular oder so...
...
mysql_query("INSERT INTO TABELLE (IP_ADRESSE, SPERRE_ZEIT) VALUES ('$ip_adr', '$zeit_jetzt')");
...





Grüße

Dawid
 
Ein fertiges Script kannst auch auf meiner Seite downloaden, funktioniert ohne DB.
 
Thx...
Ich finde aber keine IP Sperre...
blink.gif
Oder sehe ich irgendwie nicht?
huh.gif

Aber das mit der DB muss ich sagen, dass das für mich leichter ist...
biggrin.gif


Achso, Wie hast du die Überschriften gemacht (Webcodes, PHP....)?
Weil das sind ja einzellne Bilder und ich denke nicht, dass du jeden Bild einzelln eingefügt hast, oder?


Grüße
biggrin.gif


Dawid
 
Der einfachste Weg wäre die PHP Funktion str_replace

Kannst natürlich auch Bilder erzeugen, aber würde dir str_replace empfehlen.

Gruß
carapau
 
Die IP-Sperre ist schon vorhanden. Bevor der Counter includet wird, kann die Zeit in der $bt angegeben werden. Den Rest findest Du in der 'function.inc'.

In der 'counter_1.dat' ist immer nur eine einzige Zahl gespeichert. Diese wird ausgelesen, erhöht und dann überschrieben. Das ist wirklich unproblematisch. Auch mit den IP's. Sobald der Counter noch irgendwelche Statistikfunktionen haben soll, dann würde ich auch eine DB verwenden, ist dann auf jeden Fall einfacher umzusetzen. Wenn Du mit einer DB grundsätzlich besser zurecht kommst, whynot.

Das mit den Überschriften hast du richtig erkannt, jeder Buchstabe eine Grafik. Abgelegt un unterschiedlichen Verzeichnissen, getrennt kleine und grosse Buchstaben, Ziffern und Zeichen.
Immer dort wo ein Titel rein kommt wird ein kleines php Script includet. Davor werden 2 Variablen definiert. Die erste mit dem Inhalt des Titels, die zweite mit mit Ziffern für jede Stelle die angibt ob grosse/kleine Buchstaben oder andere Zeichen. Das Script ist dann eine Schleife die sich entsprechend abarbeitet. So kann ich beliebige Titel ganz schnell zusammen stellen.

Gruss René
 
@Rene

Thx und sorry, ich habs nicht gesehen...
ohmy.gif
wink.gif
biggrin.gif
laugh.gif

Du bist doch Programmierer ne, kannst du mir sagen wie ich werte einer Tabelle (MySQL) zählen kann und dann das Ergebnis ausgeben? Ich meine ich kenn den Befehl zum zählen, das geht so: select count(*) from TABELLE, aber wie kann ich das Ergebnis dieser Zählerei ausgeben?
 
Ok, danke... ich habs schon selber geschafft:

$zaehlen_abfrage = mysql_query("SELECT COUNT(*) AS count FROM TABELLE");
$zaehlen_ausgabe = mysql_fetch_object($zaehlen_abfrage);
$zaehlen = $zaehlen_ausgabe->count;


Grüße

Dawid
 
Zurück
Oben