IP-Sperre
IP-Sperre
Hi, ich suche eine kleine einfache IP Sperre.
Und zwar, dass ein user eine seite, die ich vorgebe nur jede Stunde aufrufen kann.
Das ganze sollte über die Forendatenbank laufen und nicht über cookies.
ist soetwas möglich?
Habs schon mit cookies probiert, aber die, die die deaktiviert haben können halt so oft sie wollen auf die seite...
Und zwar, dass ein user eine seite, die ich vorgebe nur jede Stunde aufrufen kann.
Das ganze sollte über die Forendatenbank laufen und nicht über cookies.
ist soetwas möglich?
Habs schon mit cookies probiert, aber die, die die deaktiviert haben können halt so oft sie wollen auf die seite...
also zur zeit nutze ich die IP sperre mit cookies.
Problem dabei: user, die keine Cookies akzeptieren können die seite so oft sie wollen reloaden.
gibt es da ne möglichkeit, dass user, die cookies deaktiviert haben ne fehlermeldung bekommen?
Hier der code:
Problem dabei: user, die keine Cookies akzeptieren können die seite so oft sie wollen reloaden.
gibt es da ne möglichkeit, dass user, die cookies deaktiviert haben ne fehlermeldung bekommen?
Hier der code:
Code: Alles auswählen
<?php
ob_start();
$time = 59*60;
if(!empty($_COOKIE['sperre5'])) {
echo "<b>Du kannst nur jede Stunde mitspielen!</b>";
}
else {
echo "Du hast XX Punkte gewonnen";
setcookie("sperre5","sperren5",time()+$time);
}
?>
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Ein sehr rudimentäres Skript, ungetestet:
Code: Alles auswählen
//Speichern der IP wenn sie "benutzt" wurde:
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$sql = "INSERT INTO ip_speicher_tabelle (IP, time) VALUES ('$ip',$time)";
$db->sql_query($sql); //oder wie auch immer dein Datenbankaufruf aussehen mag...
//Abfragen der IP ob sie verwendet werden darf:
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT count(*) AS anz FROM ip_speicher_tabelle WHERE IP = '$ip' AND $time - time < 86400";
$result = $db->sql_query($sql);
$count = $db->sql_fetchfield(0,0,$result);
if($count)
{
//Verboten
}
else
{
//Erlaubt
}
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Nein da wo die Anmerkungen sind musst du natürlich noch was ändern. Ich weiß nicht was du für ein Datenbanksystem verwendest, daher habe ich hier die für das phpBB Forum verwendeten abstrahierten Befehle verwendet (phpBB verwendet ja einen DBAL der das ganze vom Datenbanktyp (mysql, postgres...) unabhängig macht. Das musst du durch deine entsprechenden Befehle ersetzen (es sei denn du baust das in Forumsdateien oder Dateien die das Forumsystem nutzen ein, dann sollte es auch so gehen).
Außerdem musst du den Code wohl aufteilen. Wenn du das so einfach einbauen würdest dann würdest du ja bei jedem Aufruf erst mal speichern dass die IP "benutzt" wurde und danach dann abfragen ob du sie benutzen darfst (was dann wohl nicht der Fall ist, denn sie wurde ja schon benutzt). Du musst also den ersten Teil da einbauen wo du das Speichern realisieren solltest und den zweiten Teil an der Stelle, wo du die Abfrage brauchst. Effektiv könnte es gut sein, dass du dann beide ineinander verschachtelst.
Außerdem existieren die zugehörigen Datenbankstrukturen ja noch gar nicht, selbst wenn du alles was oben steht machen würdest würde erst mal nichts passieren bis du die in den SQL Anweisungen verwendeten Tabellen angelegt hast. Welche Felder darin sein müssen geht aus den SQL Abfragen im Code hervor.
Außerdem musst du den Code wohl aufteilen. Wenn du das so einfach einbauen würdest dann würdest du ja bei jedem Aufruf erst mal speichern dass die IP "benutzt" wurde und danach dann abfragen ob du sie benutzen darfst (was dann wohl nicht der Fall ist, denn sie wurde ja schon benutzt). Du musst also den ersten Teil da einbauen wo du das Speichern realisieren solltest und den zweiten Teil an der Stelle, wo du die Abfrage brauchst. Effektiv könnte es gut sein, dass du dann beide ineinander verschachtelst.
Außerdem existieren die zugehörigen Datenbankstrukturen ja noch gar nicht, selbst wenn du alles was oben steht machen würdest würde erst mal nichts passieren bis du die in den SQL Anweisungen verwendeten Tabellen angelegt hast. Welche Felder darin sein müssen geht aus den SQL Abfragen im Code hervor.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Ok, also muss der SQL befehl so aussehen:
oder?
Code: Alles auswählen
ADD `ip_speicher_tabelle` MEDIUMINT( 8 ) DEFAULT '0' NOT NULL ,
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Die Struktur der Tabelle kannst du dir ja anhand der benutzten Datentypen überlegen, INT kannst du für die Zeit verwenden, da ich die IP nicht umwandele musst du wohl für die IP VARCHAR o.ä. nehmen (oder du wandelst die IP um). Die Spaltennamen sind vorgegeben, ich würde mir nicht die Mühe machen den SQL Befehl zum Erstellen der Tabelle von Hand zu machen sondern eher das ganze per Frontend (z.b. phpmyadmin) zusammenklicken.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.