spamschutz

  • Themenstarter Themenstarter Kebb
  • Beginndatum Beginndatum
K

Kebb

Halloi,
ich hab ein Kommentarscript

dabei wird beim posten die ip in eine datei eingetragen
dann kann der poster aber bis zum nächsten post eines anderne bzw. erst nachdm er eine andere ip hat wieder posten

nun hätte ich es gerne so das 15 sekunden nach dem postne die datei geleert wird, wie mach ich das?


der schnippsel aus meinem script:
PHP:
$ip = getenv("REMOTE_ADDR");
   $sperredatei = fopen("ip.txt","r+");
   $loadip = fread($sperredatei,filesize("ip.txt"));
   fclose($sperredatei);

...

if ($ip == $loadip){
   echo "<div align=\"center\" class=\"text\"><br>Du hast gerade schon einen Eintrag gemacht!<br><a href=\"javascript:history.back()\">Hier gehts zur&uuml;ck!</a></div>";
   die;
   }
   else{
   $sperredatei = fopen("ip.txt","w+");
   fputs($sperredatei,$ip);
   fclose($sperredatei);
   }
 
Merk Dir doch einfach den Timestamp zur IP und lösche die Zeilen aus der Datei,
deren Timestamp länger als 15 Minuten zurück liegt. Den Timestamp kannst Du
zum Beispiel duch ein Kmma getrennt hinter der IP abspeichern.

snuu
 
naja in der datei steh immer nur eine ip
eigentlich könnte ich ja das script nachdem es die ip in die datei geschrieben hat 15 sekunden warten lassen und dann den inhalt einfach durch "" ersetzen und damit wär das ja so wies auch sein soll, im moment zumindest, nur wie lass ich das script 15 sekunden warten bevor eine aktion geschiet?

PHP:
$ip = getenv("REMOTE_ADDR"); 
   $sperredatei = fopen("ip.txt","r+"); 
   $loadip = fread($sperredatei,filesize("ip.txt")); 
   fclose($sperredatei); 

... 

if ($ip == $loadip){ 
   echo "<div align=\"center\" class=\"text\"><br>Du hast gerade schon einen Eintrag gemacht!<br><a href=\"java script:history.back()\">Hier gehts zur&uuml;ck!</a></div>"; 
   die; 
   } 
   else{ 
   $sperredatei = fopen("ip.txt","w+"); 
   fputs($sperredatei,$ip);

// warte 15 sekunden 
  
   $ipweg = "";
   fputs($sperredatei,$ipweg);
   fclose($sperredatei); 
   }
 
Zuletzt bearbeitet von einem Moderator:
Und warum steht in der Datei nur eine IP? Was machst Du, wenn gleich danach
noch jemand postet und somit die erste IP überschrieben wird? Somit können
Dich 2 Poster im Wechsel zuspammen.

Wenn Du schon eine Datei zur Datenhaltung verwenden musst, dann speicher
alle IPs in einer Datei (mit Timestamp) und überrüfe, ob die IP innerhalb der
letzten 15 Minuten gepostet hat oder nicht. Gleichzeitig kannst Du aus der Datei
alle IPs entfernen, deren Sperrzeit abgelaufen ist.

Aber um Deine Frage zu beantworten: [phpf]sleep[/phpf]

snuu
 
kannst du mir erklären wie ich das scripten muss?
hab sowas ja nun nie gemacht :/
achja, 15 sekunden nicht minuten aber stimmt 5minuten wäre besser :)
 
Ich programmiere jeden Tag Dinge, die ich noch nicht gemacht habe. Sonst
müsste ich ja auch nicht programmieren. Versuch's doch erst einmal selbst. Du
weisst, wie man Daten in Dateien schreibt und wie man sie dort wieder raus holt.
Des Weiteren gibt dir die Dokumentation auf php.net Auskunft über Datums- und
Zeitfunktionen. Wenn Du verstehst, wie das Script funktionieren soll, dann kannst
Du's auch umsetzen. Nur die benötigte Syntax musst Du noch nachschlagen.

snuu
 
Zurück