Inaktive Benutzer automatisch löschen

M-P

Mitglied
Also ich will mit Cronjobs alle 7 Tage alle Benutzer löschen die ihre Email innerhalb von 7 Tagen nicht bestätigt haben.
Ich habe mir überlegt das wie folgendermaßen zu machen:

PHP:
<?php
include 'config.php';
mysql_query("DELETE FROM benutzerdaten WHERE T='8' AND Aktivierung !='1'");
mysql_query("UPDATE benutzerdaten SET T=T+1 WHERE Aktivierung!='1'");
?>
Funktioniert aber nicht. =(
 
Da gibt es 2 Möglichkeiten:

1) die DELETE-Anweisung stimmt nicht
2) der Cronjob tut nicht

Hast du den Einträge die T = 8 und Aktivierung != 1 entsprechen ?

NACHTRAG:

Du schreibst "...ich will mit Cronjobs alle 7 Tage ..." das heißt aber das der Cronjob nur 1 x pro Woche ausgeführt wird. Dann wird der Zähler aber auch nur einmal in der Woche um 1 erhöht.
 
Zuletzt bearbeitet:
Funktioniert aber nicht. =(

Und wie lautet die Fehlermeldung?

Speichere bei der Anmeldung doch einfach einen Timestamp (CURRENT_TIMESTAMP). Die inaktiven Benutzer löschst Du dann so:

Code:
DELETE FROM benutzerdaten WHERE anmeldedatum < (CURRENT_TIMESTAMP-(8*24*60*60)) AND Aktivierung != '1'
 
  • Gefällt mir
Reaktionen: M-P
Da gibt es 2 Möglichkeiten:

1) die DELETE-Anweisung stimmt nicht
2) der Cronjob tut nicht

Hast du den Einträge die T = 8 und Aktivierung != 1 entsprechen ?

NACHTRAG:

Du schreibst "...ich will mit Cronjobs alle 7 Tage ..." das heißt aber das der Cronjob nur 1 x pro Woche ausgeführt wird. Dann wird der Zähler aber auch nur einmal in der Woche um 1 erhöht.

1)Habs natürlich auch einmal selbst ausgeführt funktioniert auch nicht. Hab auch T auf 8 gesetzt bei ein paar Testaccounts.
2)Nein er muss jeden Tag ausgeführt werden weil sonst zählt er ja nicht bei den Usern die sich später angemeldet haben hoch bzw. löscht die User früher.

Hi,



Das ist keine brauchbare Fehlerbeschreibung...

Warum speicherst Du denn da die Anzahl Tage (die Du dann auch noch täglich hochzählen musst)? So etwas macht man üblicherweise, indem man ein DATETIME speichert und die Differenz zu NOW() vergleicht. Schau Dir mal die Datums- und Zeitfunktionen an.

LG

Und wie lautet die Fehlermeldung?

Speichere bei der Anmeldung doch einfach einen Timestamp (CURRENT_TIMESTAMP). Die inaktiven Benutzer löschst Du dann so:

Code:
DELETE FROM benutzerdaten WHERE anmeldedatum < (CURRENT_TIMESTAMP-(8*24*60*60)) AND Aktivierung != '1'

Ich versuchs mal mit dem Timestamp.

Vielen Dank schon einmal.:)
 
Zuletzt bearbeitet:
Tut mir unendlich Leid eigentlich passieren mir mittlerweile so Anfängerfehler nicht mehr aber ich hatte die config.php nicht im selben Verzeichnis - Ich schäm mich zu Tode!
Zu der Timestamp Sache: Ich habe als Anmeldedatum bereits date("j. F Y"); gespeichert.
Mit meinem Hochzähler funktioniert es zwar aber ich werde wohl eine weitere Spalte einfügen müssen, weil ich das Anmeldedatum in dieser Form im Profil anzeigen lassen möchte. Oder gibt es eine einfache Möglichkeit das Timestamp anders zu formatieren.(Ah - kann man ja mit explode machen und dann Variablen vertauschen.)

Nochmals Vielen Dank! :D :)
 
Zurück