Hallo zusammen.
Ich bin gerade dabei, ein simples Gästebuch zu programmieren.
Die Einträge werden in einer Textdatei gespeichert.
Es kann der Name, die E-Mail Adresse und die Homepage angegeben werden. Zudem wird das aktuelle Datum zu jedem Beitrag geschrieben.
Wie kann ich eine IP-Sperre einbauen, dass ein Besucher (eine IP) innerhalb von 10 Minuten nur einmal schreiben darf?
Die IPs müssten in eine Textdatei gespeichert werden, aber wie lautet der Code dafür und wie lautet die if-Abfrage dazu, die überprüft ob der Besucher schon eingetragen hat und es soll eine Fehlermeldung erscheinen...?!? Möglich muss es ja sein, aber wie :-D
Es reicht, wenn ca. 10 IPs in der Textdatei gespeichert werden können und dann immer überschrieben werden.
Danke schon mal im Voraus, ich freue mich auf eure Antworten.
Seite 1 von 1
[php] Gästebuch Mit Ip-sperre
#1
geschrieben 01. März 2005 - 15:50
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Anzeige
#2
geschrieben 01. März 2005 - 15:59
$thisip = $_SERVER['remote_addr']; $blockedips = fopen("./my_ipfilter.txt", "r"); $theips = fread ($blockedips, filesize ("./my_ipfilter.txt")); $ip = explode(",", $theips); $search = array_search($thisip, $ip); if(strlen($search)==0){ //Nicht vorhanden, Zugriff erlauben }else{ //Vorhanden, blocken echo "Bäh, du darfst hier nicht rein!"; }
Eventuell etwas umständlich, aber es müsste so gehen. Das File my_ipfilter.txt enthält in diesem Fall alle geblockten IPs.
Dieser Beitrag wurde von stefanra bearbeitet: 01. März 2005 - 15:59
#3
geschrieben 01. März 2005 - 16:03
Nun... Um die IP auszulesen:
Ich würde zu den IPs in die Textdatei noch Datum und Uhrzeit einfügen... Allerdings in einem Format, mit dem man eindeutig vergleichen kann...
z.B.
Jahr,Monat,Tag,Stunde,Minute
Also z.B. 200503011600
Dann kannst du mit
Den Vergleich ausführen... Zumindest so in der Art...
$_SERVER['REMOTE_ADDR']
Ich würde zu den IPs in die Textdatei noch Datum und Uhrzeit einfügen... Allerdings in einem Format, mit dem man eindeutig vergleichen kann...
z.B.
Jahr,Monat,Tag,Stunde,Minute
Also z.B. 200503011600
Dann kannst du mit
if ( $VorigeZeit <= ($AktuelleZeit - 10) ) { /* Hier bitte Code einfügen */ } else { /* Hier bitte Code einfügen */ }
Den Vergleich ausführen... Zumindest so in der Art...
Dieser Beitrag wurde von Mr_Maniac bearbeitet: 01. März 2005 - 16:04
#4
geschrieben 01. März 2005 - 16:05
@stefanra
Das ist genau das, was ich gesucht habe.
Kann ich auch einstellen, dass er z.B. maximal 10 IPs abspeichert und dann immer die ältesten überschreibt?
Das ist genau das, was ich gesucht habe.
Kann ich auch einstellen, dass er z.B. maximal 10 IPs abspeichert und dann immer die ältesten überschreibt?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
#5
geschrieben 01. März 2005 - 18:46
Format, mit dem man eindeutig vergleichen kann... z.B. Jahr,Monat,Tag,Stunde,Minute Also z.B. 200503011600
timestamp wäre vielleicht einfacher
Kann ich auch einstellen, dass er z.B. maximal 10 IPs abspeichert und dann immer die ältesten überschreibt?
naja "einstellen" wohl eher weniger aber du kannst natürlich code schreiben, der das macht z.B.
$blockedips = fopen("./my_ipfilter.txt", "r"); $theips = fread ($blockedips, filesize ("./my_ipfilter.txt")); $ip = explode(",", $theips); $anzahl=count($ip); if($anzahl <= 10){ //10 oder weniger Einträge }else{ //mehr als 10 Beiträge $thisip = $_SERVER['remote_addr']; $ip[0]=$thisip; $new_string=implode(",",$ip); fwrite($blockedips,$new_string); }
edit: ups mein code hat immer den letzten eintrag ersetzt ^-^
Dieser Beitrag wurde von Urza bearbeitet: 01. März 2005 - 18:47
#6
geschrieben 02. März 2005 - 12:51
@Urza ist dieser nun richtig, kann ich den nehmen?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.
(Konfuzius)
#7
geschrieben 02. März 2005 - 16:17
hey der code ist aus dem stehgreif geschrieben, keine garantie dafür, dass der 100% richtig ist. sollten fehler auftreten -> icq oder hier nochmal melden
- ← [php] Datei Nur Auslesen - Nicht Ausgeben
- Skript/Web-Programmierung
- Neues Hackme - 12 Level Zum Knacken →
Thema verteilen:
Seite 1 von 1