kostenloser Webspace werbefrei: lima-city


MySQL-Einträge nach vorgegebener Zeit löschen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    k***********f

    moinsen Leude

    ich hab ne IP-Sperre mit MySQL gemacht und m?chte gerne, dass die nach ner gewissen Zeit wieder aufgehoben wird. ich hab also immer die IP in einer zeile und dann soll das nach ca. 6 Stunden wieder automatisch gel?scht werden. Hat einer nen Peil, wie das geht?

    Ich bedank mich schonmal im Vorraus. ^^
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    mach noch ne Spalte "time" dazu.

    Wenn du ne IP einf?gest dann f?ge da den Wert time() ein.

    Und dann bau das in dein Script ein:

    mysql_query("DELETE FROM tabelle WHERE time < (time()-21600)");
  4. Autor dieses Themas

    k***********f

    aha, ok... also wenn ich das script rischtisch kappiert hab, pr?ft es bei jeder aktivirung die Spalte time / Zeit pder sonst was... aber wie bestimme ich dann die Zeitspanne? ich brauche etwas mehr erkl?rung sonst wirds leider nix...
  5. b*****m


    mach noch ne Spalte "time" dazu.

    Wenn du ne IP einf?gest dann f?ge da den Wert time() ein.

    Und dann bau das in dein Script ein:

    mysql_query("DELETE FROM tabelle WHERE time < (time()-21600)");


    In der Spalte time wird der unix-timestamp eingetragen das sind die sekunden seit dem ersten januar 1970 00:00! Alles was die sekunden time()-21600) als 21600 sek in der vergangenheit hat wird gekillt!
  6. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    ich brauche etwas mehr erkl?rung sonst wirds leider nix...


    Kannst du haben:

    Mit time() kann man sich den aktuellen UNIX-Zeitstempel zur?ckgeben lassen.
    Dieser Zeitstempel enth?lt die Anzahl der Sekunden seit Beginn der Unix-Epoche
    (01.01.1970 um 00:00:00 Uhr).

    Quelle: http://www.selfphp.de/funktionsreferenz/datums_und_zeit_funktionen/time.php

    Das hei?t also, dass du mit time() eine Zahl zur?ckbekommst, die sich jede Sekunde um 1 erh?ht.

    6 Stunden = 21600 Sekunden

    Wenn du immer beim Eintragen der Ip in die MySQL-Tabelle den zu dem Zeitpunkt aktuellen Wert von time() dazuschreibst und 6 Stunden vergehen l?sst, dann ist der Wert in der Tabelle gleich dem Wert von time() nach 6 Stunden minus die 21600 Sekunden.

    Wenn nun der Wert von time() noch weiter steigt wird der Wert von time()-21600 noch viel gr??er als der Wert in der Tabelle bzw. der Wert in der Tabelle ist kleiner, deshalb "DELETE FROM tabellenname WHERE time < (time()-21600)" ... und das musst du dann nurnoch ?ber mysql_query ausf?hren, denn der Befehl "DELETE" l?scht Eintr?ge aus MySQL-Tabellen.
  7. Autor dieses Themas

    k***********f

    ok... vielen Dank. ^^
    jetzt habisch es geschnallt...
    und da wir scon beim L?schen von eintr?gen sind... wei? einer, wie SQL-Eintr?gegel?sct werden, wenn man das Fenster schlie?t?

    ich mach mal ein kleines Beispiel... Seite1 zeigt alle Eintr?ge in der Datenbank an, die Seite2 (von mir aus ein Chat) erzeigt hat... wenn ich Seite2 nun sclie?e, wird der Wert in der Datenbank wieder gel?scht. Dabei soll nur der Wert gel?scht werden, den ich mit dem Aufrufen der Seite erstellt abe... alle anderen Werte, die andere durch das aufrufen von seite2 erstellt haben, sollen bleiben. seite 1 aktualisiert sic ja dann automatisch.

    Das habe ich schonmal gefragt, aber iwie kam da keine Antwort drauf...
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!