row aus mysql datenbank nach zeit loeschen

loki2002

Erfahrenes Mitglied
Hi,

ich hab ein guestbook geschrieben und moechte nun ebenfalls die "ip" mit in die mysql datenbank schreiben lassen.. funktioniert auch alles, nur stelle ich mir die frage ob es moeglich ist mit UPDATE oder DELETE diesen ip eintrag nach einer bestimmten zeit wieder aus der mysql Datenbank zu loeschen.. also es soll so eine art Antispam funktion sein, so das er maximal 1 post pro Stunde machen kann.

gibts da die moeglichkeit? wenn ja mal bitte ein beispiel. Danke! =D
 
Ja das geht. Allerdings nicht direkt mit mySQL. Dazu brauchst du ASP, PHP, cgi oder eine ähnlich Script Sprache.

Im Prinzip ist das einfach: Du speicherst einen Timestamp mit in die Tabelle in der die die IPs logs. Am besten in einer separaten Tabelle.

Dann machst du eine IF Abfrage die ungefähr so aussieht: (Bps.: PHP):

PHP:
$time = time();
$strSQL = "SELECT ip, idx_time FROM tbl WHERE idx_time < $time";
$result = mysql_query ( $strSQL, $conn );

while ( $rows = mysql_fetch_array ( $result ) ) {
  $sqlDel = "DELETE FROM tbl WHERE id = $rows[id]";
  mysql_query ( $sqlDel, $conn );
}

Wenn du das ausführst dann löscht er alle Datensätze die deine vorgegebene Zeit überschritten haben.

Am besten du includest das auf deine Startseite, oder wenn du die möglichkeit hast per CronJOB laufen lassen.
 
kann man nicht einfach bei jedem 'Submit' ein 'DELETE FROM tbl WHERE idx_time <= ($time)' schicken. Damit werden doch jedesmal wenn irgendjemand etwas eintragen will alle veralteten Elemente entfernt. Dann prüft man nur noch vorm Speichern ob sich die IP trotzdem noch in der Tabelle befindet und erlaubt oder verweigert das Eintragen. Dann bräuchte man es nicht als CronJob laufen lassen und es ist immer aktuell.

Oder hab ich irgendetwas falsch verstanden :confused: ?

Gruß
 
So kannst du es natürlich auch machen. Oder auf der Startseite wo sich deine User einloggen bzw. welche sie aufrufen. Somit musst du es nicht immer manuell machen!
 

Neue Beiträge

Zurück