ilch Forum » Allgemein » HTML, PHP, SQL,... » User Status Inaktiv schalten

Geschlossen
  1. #1
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Gibt es eine moeglichkeit wenn ein user laenger als 6 Monate nicht Online/Eingelogt war das der Status vom User automatisch auf Inaktiv geschaltet wird?

    habe zwar in der suche eine liste der angezeigten Inaktiv user gesehen und so aber das ist ja nicht das was ich suche.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    <?php $inactivetime = 604800 * 8; # 1 Woche = 604800 Sekunden
    $inactivstamp = time() - $inactivetime;
    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".$inactivstamp."'"); ?>


    den code würde ich im Adminbereich einbauen damit er nicht bei jedem Seitenaufruf ausgeführt wird. Evtl auch über ein Formular um das ganze manuell zu erledigen.

    geht natürlich auch schöner, aber sollte bis zum Jahr 2035 funktionieren zunge


    Zuletzt modifiziert von GeCk0 am 28.08.2011 - 15:08:47
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    Grundsätzlich:

    $inaktiv = time() - (180 * 24 * 60 * 60); // 180 Tage * 24 Stunden * 60 Minuten * 60 Sekunden
    db_query("UPDATE `prefix_user` SET status = '0'  WHERE llogin < '" .$inaktiv. "'");


    ...es gibt aber auch ein Modul:

    www.ilch.de/downloads-show-1437.html

    PS.: zu langsam ^^


    Zuletzt modifiziert von Lord|Schirmer am 28.08.2011 - 15:07:38
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    Das Modul ist von mir...
    Regelt das aber nicht automatisch sondern listet nur die inaktiven User (ab x Wochen) auf, welche man dann löschen kann

    ist also nicht wirlich das, was du suchst, aber natürlich eine nette Grundlage um die o.g. Query einzubauen


    Zuletzt modifiziert von GeCk0 am 28.08.2011 - 15:09:13
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    hm okay da muesste ich schauen wo ich das ganze einbaue in meinen fall 6 Monate waere es dann so?

    <?php $inactivetime = 604800 * 20; # 1 Woche = 604800 Sekunden
    $inactivstamp = time() - $inactivetime;
    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".$inactivstamp."'"); ?>


    Normal sollte er es automatisch machen durch klicken wird es ja nicht automatisch geschehen zwinker und das andere laedt zuviel?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    naja du könntest es z.b. in die admin.php einbauen, dann passiert es immer automatisch wenn du in den Adminbereich gehst.

    in der index.php würde ich es nicht machen da es sonst IMMEr ausgeführt wird.

    ansonsten könnte man einen Cronjob einrichten, denke aber mit der admin.php bist du ganz gut bedient
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    dann wollen wir dies doch mal machen lächeln

    Das mit der rechnung damit es 6 monate sind ist richtig?
    604800 * 20; # 1 Woche = 604800 Sekunden
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Revolution Hall Of Fame
    Registriert seit
    14.08.2006
    Beiträge
    1.688
    Beitragswertungen
    109 Beitragspunkte
    Nein nicht ganz :-)
    60 * 60 * 24 * 180 = 115552000 sek für 6 Monate

    ich würde es bei dem zeitraum auch nicht mehr mit timestamp lösen.
    je anch dem wie genau du es möchtest, wenn es zb. genau 6 moante sein sollen (auf den tag genau) würde ich es anders machen!


    Zuletzt modifiziert von Revolution am 28.08.2011 - 17:36:22
    Kreativ, modern, Conversion und Usability optimiert
    individuelles Webdesign für ein optimales Erscheinungsbild
    404studios
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Achja haete ich so ja selbst mal nachrechnen koennen zwinker danke lächeln

    edit: Nein quatsch muss nicht auf den tag genau sein zwinker nur so ungefaehr ein halbes jahr nicht aktiv = inaktiv dachte ich mir mehr nicht.


    Zuletzt modifiziert von Siggi am 28.08.2011 - 17:39:47
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    eine schönere Möglichkeit bietet noch strtotime

    strtotime("NOW - 6 month")


    sollte dir auch das gewünscht ergebnis liefern


    Zuletzt modifiziert von GeCk0 am 28.08.2011 - 18:07:04
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    oeh davon hab ich ja noch nie was gehoert zwinker

    muss ich da einfach nur

    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".strtotime("- 6 month")."'");


    machen oder was?
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    GeCk0 Hall Of Fame
    Registriert seit
    01.05.2009
    Beiträge
    2.989
    Beitragswertungen
    96 Beitragspunkte
    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".strtotime("NOW - 6 month")."'");



    Zuletzt modifiziert von GeCk0 am 28.08.2011 - 18:04:12
    Alle Module von mir sind nun unter php-gecko.de erreichbar
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    zeroxul Mitglied
    Registriert seit
    08.07.2007
    Beiträge
    29
    Beitragswertungen
    0 Beitragspunkte
    Hey, ich störe euch ja nur ungern, manchmal denke ich wenn mir das nur einer beigebracht hätte damals,dann hätte ich das vielleicht auch selber hingekriegt, das fühlt sich nämlich besser an als alles andere, aber wie gut das es Foren gibt, es ist gut zu wissen das in dieser Welt, in der so viel Unmut herrscht, doch noch manche Menschen Freiwillig ohne Gegenleistung Helfen, auch anderen die es noch nicht selber können.

    Es geht um den oben geposteten Code, wodurch user Automatisch auf Inaktiv gesetzt werden,und ich wollte nicht extra ein neues Thema erstellen.
    /include/admin/admin.php
    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".strtotime("NOW - 6 month")."'");

    Ich wollte es gerne so erweitern das nicht nur der Status, sondern auch das Recht und der Rank des Users geändert wird, und der User aus allen Gruppen entfernt wird.
    Recht und Rank ist ja leicht nachzuvollziehen

    /include/admin/admin.php
    db_query("UPDATE `prefix_user` SET status = '0' WHERE llogin <= '".strtotime("NOW - 6 month")."'");
    db_query("UPDATE `prefix_user` SET recht = '-2' WHERE llogin <= '".strtotime("NOW - 6 month")."'");
    db_query("UPDATE `prefix_user` SET spezrank = '107' WHERE llogin <= '".strtotime("NOW - 6 month")."'");

    Nur habe ich Probleme mit den Gruppen, hat jemand vielleicht eine Idee wie ich es hinbekomme das ein User der 6 Monate nicht online wahr, automatisch aus allen Gruppen entfernt wird?

    Hintergrund ist der, das wir unsere User-Verwaltung aufräumen müssen, hauptsächlich soll es für Übersicht sorgen, den bei uns haben alle den Überblick verloren^^

    SoLoNg...ZeRoXuL
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    
    db_query("delete from `prefix_groupusers` WHERE `prefix_user`.id=uid AND `prefix_user`.llogin <= '".strtotime("NOW - 6 month")."'");


    so müsste das eigentlich klappen.
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    zeroxul Mitglied
    Registriert seit
    08.07.2007
    Beiträge
    29
    Beitragswertungen
    0 Beitragspunkte
    Hey danke, dieser Code bring mich schon mal weiter, leider bekomme ich im Moment noch folgende Fehlermeldung im Adminbereich.
    MySQL Error:
    1054 : Unknown column 'ic2_user.id' in 'where clause'
    in Query:
    delete from `ic2_groupusers` WHERE `ic2_user`.id=uid AND `ic2_user`.llogin <= '1315414431'
    Debug backtrace:
            @ mysql.php:32 -- debug_bt()
            @ mysql.php:50 -- db_check_error(...)
            @ admin.php:30 -- db_query(...)
            @ admin.php:23 -- require_once(...)
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    war auch totaler Müll wa sich da geschrieben habe^^
    Nachdem ich nun wieder klar denke hier die Lösung:

    db_query("delete from `prefix_groupusers` WHERE uid=(select id from `prefix_user` where llogin <= '".strtotime("NOW - 6 month")."')");
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    zeroxul Mitglied
    Registriert seit
    08.07.2007
    Beiträge
    29
    Beitragswertungen
    0 Beitragspunkte
    Wider klar denken? die letzte Party muss gut gewesen sein^^

    Der Fehler ist jetzt weg, es kommt also kein Fehler mehr. Der code ist auch nachvollziehbar richtig, aber es verändert sich nichts in den Gruppen, hmm ich fummel mal ein wenig rum.
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    WeLo Mitglied
    Registriert seit
    22.05.2012
    Beiträge
    108
    Beitragswertungen
    17 Beitragspunkte
    der Fehler liegt ganz einfach darin, das man die MySql Anweisungen in GROSS Buchtaben schreiben muss, ansonsten nimmt Dir die MySql das sehr übel.


    so muss es aussehen, dann funktioniert es:

    db_query("DELETE FROM `prefix_groupusers` WHERE uid=(select id FROM `prefix_user` WHERE llogin <= '".strtotime("NOW - 6 month")."')");


    bei mir jedenfalls funktioniert es so.

    sry wegen den Smilies, aber dafür kann ich nix ^^


    !EDIT! Doch Du kannst was für die Smileys lachen. Bitte Codes in den [CODE] Tags setzen, siehe gesperrtes Bild.
    Gruß Lord|S.


    Zuletzt modifiziert von Lord|Schirmer am 24.05.2012 - 06:56:11
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    das mit der Großschreibung ist müll. es ist egal ob Groß oder kleinschreibung mysql ist nicht case sensitive. Jedenfalls nicht bei Keywords. Tabelln und Spalten sind dagegen wieder case sensitive.
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten