ilch Forum » Ilch Clan 1.1 » Kritik und Verbesserungen » User beim ausloggen löschen

Geschlossen
  1. #1
    User Pic
    Heinz2 Mitglied
    Registriert seit
    26.10.2007
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Wenn ein User die Seite verlässt und sie später wieder besucht ist er schon angemeldet. Besteht die Möglichkeit, dass beim verlassen der Seite auch automatisch eine Abmeldung erfolgt? Wenn zum Beispiel ein anderer User sich an den Rechner setzt und die Seite aufruft ist er schon mit dem Benutzernamen des vorangegangenem User angemeldet. Gibt es so eine automatische Löschung der Benutzerdaten? Zuneigung

    MfG


    verwendete ilchClan Version: 1.1

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mr.Anderson Mitglied
    Registriert seit
    09.06.2007
    Beiträge
    89
    Beitragswertungen
    0 Beitragspunkte
    Das liegt nicht an ilch, sondern am Browser, soweit ich weiss!
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.
    Meine Heimat^^
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    Hey, Heinz2!

    Tja, das liegt am Script!
    Versuch mal in der user.php ( include/includes/func/ ):
    function user_auto_login_check () {
    ## AB HIER
      $cn = session_und_cookie_name();
      $dat = explode('=',$_COOKIE[$cn]);
      $id = $pw = 0;
      if (isset($dat[0])) { $id = escape($dat[0], 'integer'); }
      if (isset($dat[1])) { $pw = $dat[1]; }
      debug (' pw ' . $pw );
      debug (' id ' . $id );
      $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id);
      if (db_num_rows($erg) == 1) {
        debug ('benutzer gefunden');
        $row = db_fetch_assoc($erg);
        if ($row['pass'] == $pw) {
          debug ('passwoerter stimmen');
          debug ($row['name']);
          $_SESSION['authname']  = $row['name'];
          $_SESSION['authid']    = $row['id'];
          $_SESSION['authright'] = $row['recht'];
          $_SESSION['lastlogin'] = $row['llogin'];
          $_SESSION['authsess']  = $cn;
          db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
          setcookie($cn, $row['id'].'='.$row['pass'], time() + 31104000, "/" );
          return (true);
        }
      }
    
      user_logout ();
      return (false);
    ## BIS HIER LÖSCHEN
    ## Die Funktion muss aber erhalten bleiben, nur den Inhalt löschen
    }


    Aber was soll das bringen, ich würde deine Seite nur einmal besuchen, wenn ich mich jedes mal neu einloggen muss.
    Und wenn 2 User an einem Rechner sitzen, gibts noch die UserVerwaltung vom OS, wäre die bessere Lösung.

    Mit böhsen Grüßen
    BöhserDavid
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mr.Anderson Mitglied
    Registriert seit
    09.06.2007
    Beiträge
    89
    Beitragswertungen
    0 Beitragspunkte
    Was man nicht alles weiss!^^:)
    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.
    Meine Heimat^^
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    syr aber ich muss mal was berichtigen xD

    function user_auto_login_check () { 
    /*AB HIER 
      $cn = session_und_cookie_name(); 
      $dat = explode('=',$_COOKIE[$cn]); 
      $id = $pw = 0; 
      if (isset($dat[0])) { $id = escape($dat[0], 'integer'); } 
      if (isset($dat[1])) { $pw = $dat[1]; } 
      debug (' pw ' . $pw ); 
      debug (' id ' . $id ); 
      $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id); 
      if (db_num_rows($erg) == 1) { 
        debug ('benutzer gefunden'); 
        $row = db_fetch_assoc($erg); 
        if ($row['pass'] == $pw) { 
          debug ('passwoerter stimmen'); 
          debug ($row['name']); 
          $_SESSION['authname']  = $row['name']; 
          $_SESSION['authid']    = $row['id']; 
          $_SESSION['authright'] = $row['recht']; 
          $_SESSION['lastlogin'] = $row['llogin']; 
          $_SESSION['authsess']  = $cn; 
          db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'"); 
          setcookie($cn, $row['id'].'='.$row['pass'], time() + 31104000, "/" ); 
          return (true); 
        } 
      } 
    */ BIS HIER auskommentieren 
      user_logout (); 
      return (false); 
    ## Die Funktion muss aber erhalten bleiben, nur den Inhalt löschen 
    }


    das bewirkt jezt das der user direckt wieder ausgeloggt wird wenn er die Seite neu aufruft. und da ist das problem an dieser Lösung
    Egal ob man es so ändert wie david oder ich wenn mich nicht alles täuscht, dann wird ab dann nach jedem neu laden der seite ein pw verlangt , hm kann aber auch sein das es erst mit browser zu browser auf kommt , dazu wei wieder Manuel mehr.
    Mir brennt aber die frage auf der Zunge wieso braucht man sowas?
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Heinz2 Mitglied
    Registriert seit
    26.10.2007
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Danke für die schnelle Hilfe.
    Ich habe die Version von David genommen und funktioniert. Wenn ich den Browser neu aufrufe oder Verbindung war gekappt muss ich mich neu anmelden und aktualliesiere ich die Seiten neu bleibe ich eingeloggt. (So wie ich wollte).
    Warum das Ganze?
    Es wurde mir schon böse mitgespielt da sich User nicht abgemeldet hatten (andere CMS) und andere am Rechner waren die dies ausnutzten um irgendwelche blöden Kommentare zu hinterlassen und ich dann die Prob hatte.

    nochmals Danke für die Hilfe


    Zuletzt modifiziert von Heinz2 am 26.10.2007 - 10:39:15
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    @ Rock@wulf: Diese Funktion ist nur dafür zuständig den Cookie der vielleicht vorhanden ist zu suchen, und in mit den aktuellen Daten zu ersetzen, wenn das aber nicht geschiet und nach keinem Cookie gesucht wird, um zu überprüfen, ob der User eingeloggt ist/war, wird dieser hinfällig, und logout() macht nix anderes als die Zeit auf -99999999 zu setzen und den Cookie damit unbrauchbar.
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    freak Mitglied
    Registriert seit
    31.01.2007
    Beiträge
    856
    Beitragswertungen
    0 Beitragspunkte
    man könnte das doch auch so coden das man in einem kästchen ein hacken rein setzen muss das das cookie gesetzt wird und man immer eingeloggt bleibt!

    MfG freak
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    @freak: Das ne geile Idee, und ganz simpel umzusetzen. Ein Cookie wird ja sowieso gespeichert, bei jedem, um zu unterscheiden, eingeloggt, welcher genau und nicht eingeloggt, man müsste dazu nur in den Cookie einen neuen Eintrag anlegen mit einem wert von 1 für ja und 2 für nein, denn dann auslesen und weiter verarbeiten, ich schau mal, was geht.
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    freak Mitglied
    Registriert seit
    31.01.2007
    Beiträge
    856
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von boehserdavid

    @freak: Das ne geile Idee, und ganz simpel umzusetzen. Ein Cookie wird ja sowieso gespeichert, bei jedem, um zu unterscheiden, eingeloggt, welcher genau und nicht eingeloggt, man müsste dazu nur in den Cookie einen neuen Eintrag anlegen mit einem wert von 1 für ja und 2 für nein, denn dann auslesen und weiter verarbeiten, ich schau mal, was geht.


    okey super zwinker
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Heinz2 Mitglied
    Registriert seit
    26.10.2007
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von boehserdavid

    @freak: Das ne geile Idee, und ganz simpel umzusetzen. Ein Cookie wird ja sowieso gespeichert, bei jedem, um zu unterscheiden, eingeloggt, welcher genau und nicht eingeloggt, man müsste dazu nur in den Cookie einen neuen Eintrag anlegen mit einem wert von 1 für ja und 2 für nein, denn dann auslesen und weiter verarbeiten, ich schau mal, was geht.


    Klinkt gut und funktioniert ja denn wie bei eba. wenn du da was fertig hast würde es mich interessieren.

    mfg
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    Für alle die schon sehnsüchtig warten:
    INFO: Fügt nur neue Bereiche hinzu, weil das im Original eingefügt wurde.

    ICH ÜBERNEHME KENE HAFTUNG FÜR FEHLER ODER SCHÄDEN

    include/templates/user/login.htm
    <table width="100%" border="0" cellspacing="0" cellpadding="10">
      <tr> 
        <td>
          <form action="index.php?user-login" method="POST">
    			  <fieldset>
    				  <legend><b>{_lang_LOGIN}</b></legend>
    					  <label style="float:left; width:60px;">{_lang_nickname}</label><b style="float:left; text-align:left; width:20px;">:</b><input type="text" style="margin-bottom:2px;" tabindex="1" name="name" maxlength="50" /><br />
                <label style="float:left; width:60px;">{_lang_password}</label><b style="float:left; text-align:left; width:20px;">:</b><input type="password" style="margin-bottom:2px;" tabindex="2" maxlength="20" name="pass" /><br />
    <!-- Neu Anfang -->
                <label style="float:left; width:80px;"></label><input type="checkbox" name="autologin" value="1"> Autologin <br>
    <!-- Neu Ende -->
    						<label style="float:left; width:80px;">&nbsp;</label><input type="hidden" name="wdlink" value="{WDLINK}" /><input type="submit" style="margin-bottom:2px;" tabindex="3" value="{_lang_login}" name="user_login_sub" /><br /><br />
    						<label style="padding-left:80px;"><a href="index.php?user-regist">{_lang_registernow}</a></label><br />
    						<label style="padding-left:80px;"><a href="index.php?user-remind">{_lang_forgottenpassword}?</a></label>
          </form>
        </td>
      </tr>
    </table>
    
    
    {EXPLODE}
    {_lang_yourareloged}!
    {EXPLODE}
    
    {_lang_login3failure}


    include/templates/user/boxen_login.htm
    <table width="100%" border="0" cellspacing="0" cellpadding="10">
       <tr> 
        <td>
    	  Hallo &nbsp;<b>{NAME}</b>
    		<br />
    		<br />
    		{NACHRICHTEN}
    	  <a class="box" href="index.php?user-3">{_lang_logout}</a> | <a class="box" href="index.php?user-8">{_lang_profil}</a>
    		<br>
    		{ADMIN}
    		
    		</td>
      </tr>
    </table>
    {EXPLODE}
    <table width="100%" border="0" cellspacing="0" cellpadding="10">
      <tr> 
        <td>        
    	  <form method="POST">
    		<input type="text" name="name" size="13" value="{NAME}" onFocus="if (value == '{NAME}') {value = ''}" onBlur="if (value == '') {value = '{NAME}'}" maxlength="50" style="margin-top:5px; " /><br />
            <input type="password" size="13" value="{PASS}" onFocus="if (value == '{PASS}') {value = ''}" onBlur="if (value == '') {value = '{PASS}'}" maxlength="20" name="pass" style="margin-top:5px; " /><br />
            <input type="hidden" name="wdlink" value="{wdlink}" />
    <!-- Neu Anfang --> 
           <input type="checkbox" name="autologin" value="1"> Autologin <br>
    <!-- Neu Ende-->
            <input type="submit" name="user_login_sub" value="Login" style="margin-top:5px; " />{regist}
    	  </form>
        </td>
      </tr>
    </table>


    include/includes/func/user.php ab Zeile 77
    function user_login_check () {
      if ( isset ($_POST['user_login_sub']) AND isset ($_POST['name']) AND isset ($_POST['pass']) ) {
        debug ('posts vorhanden');
        $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE name = BINARY '".$_POST['name']."'");
        if ( db_num_rows($erg) == 1 ) {
          debug ('user gefunden');
          $row = db_fetch_assoc($erg);
          if ( $row['pass'] == md5($_POST['pass']) ) {
            debug ('passwort stimmt ... '.$row['name']);
            $_SESSION['authname']  = $row['name'];
            $_SESSION['authid']    = $row['id'];
            $_SESSION['authright'] = $row['recht'];
            $_SESSION['lastlogin'] = $row['llogin'];
            $_SESSION['authsess']  = session_und_cookie_name();
    ## Neu Anfang
            $autologin = escape($_POST['autologin'], 'integer');
    ## Neu Ende
            db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
     ## Diese Zeile ersetzen Anfang
    setcookie($_SESSION['authsess'], $row['id'].'='.$row['pass'].'='.$autologin , time() + 31104000, "/" );
    ## Diese Zeile ersetzen Ende
            user_set_grps_and_modules();
            return (true);
          }
        }
        global $menu;
        $menu->set_url (0, 'user');
        $menu->set_url (1, 'login');
      }
      return ( false );
    }
      
    function user_auto_login_check () {
      $cn = session_und_cookie_name();
      $dat = explode('=',$_COOKIE[$cn]);
      $id = $pw = 0;
      if (isset($dat[0])) { $id = escape($dat[0], 'integer'); }
      if (isset($dat[1])) { $pw = $dat[1]; }
    ## Neu Anfang
      if (isset($dat[2])) { $autologin = $dat[2]; }
      if($autologin == 1){
    ## Neu Ende
      debug (' pw ' . $pw );
      debug (' id ' . $id );
      $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id);
      if (db_num_rows($erg) == 1) {
        debug ('benutzer gefunden');
        $row = db_fetch_assoc($erg);
        if ($row['pass'] == $pw) {
          debug ('passwoerter stimmen');
          debug ($row['name']);
          $_SESSION['authname']  = $row['name'];
          $_SESSION['authid']    = $row['id'];
          $_SESSION['authright'] = $row['recht'];
          $_SESSION['lastlogin'] = $row['llogin'];
          $_SESSION['authsess']  = $cn;
          db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
    ## Zeile Ersten Anfang
    setcookie($cn, $row['id'].'='.$row['pass'].'='.$autologin, time() + 31104000, "/" );
    ## Zeile Ersetzen Ende
          return (true);
         }
        }
    ## Neu Anfang
     }else{
    ## Neu Ende
      user_logout ();
      return (false);
    ## Neu Anfang
     }
    ## Neu Ende
    }


    Viel Spaß damit!

    PS: Alle eingeloggten User werden ausgeloggt, d.h. der Cookie wird beim ersten mal nach dem der Mod aktiv ist, gelöscht!!!!!


    Zuletzt modifiziert von boehserdavid am 31.10.2007 - 20:31:48
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Heinz2 Mitglied
    Registriert seit
    26.10.2007
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Hallo,
    Hiermit möchte ich mich recht herzlich bei boehserdavid bedanken für die Änderung.
    Nur noch eine Frage: wenn sich ein User 5 Tage nicht einloggt wird dann nach einer gewissen Zeit das Cookie unwirksam?

    MfG
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    Ja, nach 360 Tagen, hier ist die Lösung für 5 Tage:

    function user_login_check () {
      if ( isset ($_POST['user_login_sub']) AND isset ($_POST['name']) AND isset ($_POST['pass']) ) {
        debug ('posts vorhanden');
        $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE name = BINARY '".$_POST['name']."'");
        if ( db_num_rows($erg) == 1 ) {
          debug ('user gefunden');
          $row = db_fetch_assoc($erg);
          if ( $row['pass'] == md5($_POST['pass']) ) {
            debug ('passwort stimmt ... '.$row['name']);
            $_SESSION['authname']  = $row['name'];
            $_SESSION['authid']    = $row['id'];
            $_SESSION['authright'] = $row['recht'];
            $_SESSION['lastlogin'] = $row['llogin'];
            $_SESSION['authsess']  = session_und_cookie_name();
            $autologin = escape($_POST['autologin'], 'integer');
            db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
     ## Diese Zeile ersetzen Anfang
    setcookie($_SESSION['authsess'], $row['id'].'='.$row['pass'].'='.$autologin , time() +(60*60*24*5), "/" );
    ## Diese Zeile ersetzen Ende
            user_set_grps_and_modules();
            return (true);
          }
        }
        global $menu;
        $menu->set_url (0, 'user');
        $menu->set_url (1, 'login');
      }
      return ( false );
    }
      
    function user_auto_login_check () {
      $cn = session_und_cookie_name();
      $dat = explode('=',$_COOKIE[$cn]);
      $id = $pw = 0;
      if (isset($dat[0])) { $id = escape($dat[0], 'integer'); }
      if (isset($dat[1])) { $pw = $dat[1]; }
      if (isset($dat[2])) { $autologin = $dat[2]; }
      if($autologin == 1){
      debug (' pw ' . $pw );
      debug (' id ' . $id );
      $erg = db_query("SELECT name,id,recht,pass,llogin FROM prefix_user WHERE id = ".$id);
      if (db_num_rows($erg) == 1) {
        debug ('benutzer gefunden');
        $row = db_fetch_assoc($erg);
        if ($row['pass'] == $pw) {
          debug ('passwoerter stimmen');
          debug ($row['name']);
          $_SESSION['authname']  = $row['name'];
          $_SESSION['authid']    = $row['id'];
          $_SESSION['authright'] = $row['recht'];
          $_SESSION['lastlogin'] = $row['llogin'];
          $_SESSION['authsess']  = $cn;
          db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
    ## Zeile Ersten Anfang
    setcookie($cn, $row['id'].'='.$row['pass'].'='.$autologin, time() + (60*60*24*5), "/" );
    ## Zeile Ersetzen Ende
          return (true);
         }
        }
     }else{
      user_logout ();
      return (false);
     }
    }



    Zuletzt modifiziert von boehserdavid am 04.11.2007 - 05:09:34
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Heinz2 Mitglied
    Registriert seit
    26.10.2007
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Ich danke nochmals für die Hilfe. Sollte man in eine neuere Version übernehmen.
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    olos Mitglied
    Registriert seit
    30.10.2007
    Beiträge
    148
    Beitragswertungen
    1 Beitragspunkte
    alles top

    jetzt muss ich das nur noch mit meiner Clankassenerweiterung kombinieren und dann passt es
    =====================================
    Wenn man nur das macht, was man schon kann wird man immer nur das sein, was man schon ist.
    >>>> externer Link
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    executor Mitglied
    Registriert seit
    10.01.2009
    Beiträge
    53
    Beitragswertungen
    0 Beitragspunkte
    Hallo,
    irgendwie bin ich zu blöd dafür.
    Also ich möchte beim Autologin, dass das Cookie 1 Tag (24 h) gültig ist.
    Und beim normalen Login nur für 1 h.

    Welche Werte muss ich ändern um das hinzubekommen???

    Gruß THE|#*eXecuT0r*#
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    executor Mitglied
    Registriert seit
    10.01.2009
    Beiträge
    53
    Beitragswertungen
    0 Beitragspunkte
    Hat keiner ne Lösung für mich??

    Gruß THE|#*eXecuT0r*#
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    executor Mitglied
    Registriert seit
    10.01.2009
    Beiträge
    53
    Beitragswertungen
    0 Beitragspunkte
    Was ist denn los Community????

    Wieso bekomm ich keine Antwort???
    Das muss doch irgendjemand wissen.

    Sorry für den triplepost
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Nur nochmal zum Verständnis, beim Login (also der Eingabe von Benutzer und PW) wird ein Cookie angelegt und solange es das gibt, ist man beim nächsten Seitenaufruf nach längerer Zeit wieder eingeloggt.

    31104000 sind eine Anzahl von Sekunden wie lange das Cookie gespeichert wird, den Wert könnest du halt ändern.

    31104000 = 60 * 60 * 24 * 360 <- also 360 Tage

    Du kannst diesen Wert in den Funktionen user_login_check (Anmeldung über Formular) und user_auto_login_check (Anmeldung über Cookie) ändern.

    Sobald man angemeldet ist, bleibt man anhand der Session je nach Server für 30 Minuten oder so angemeldet, selbst wenn man gar kein Cookie setzen würde.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    neoLitic Mitglied
    Registriert seit
    21.09.2009
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    Hallo zusammen,

    das Thema ist auch 2015 noch interresant.

    Daher die Frage mit der aktuellen ilch Version (1.1 P) welche Änderungen müssen in der user.php / login.php / boxen_login.php getätigt werden, dass

    - das bei anmeldung nach 30 Minuten bzw. inaktivität von 30 Minuten eine automatische abmeldung erfolgt

    - das bei auswahl von autologin, das cookie für 1 Tag bestehen bleibt

    Vielen Dank vorab für eure Hilfe.
    Fachinformatiker
    und kein Programmierer ... sorry zunge
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    ZitatZitat geschrieben von Mairu
    Nur nochmal zum Verständnis, beim Login (also der Eingabe von Benutzer und PW) wird ein Cookie angelegt und solange es das gibt, ist man beim nächsten Seitenaufruf nach längerer Zeit wieder eingeloggt.

    31104000 sind eine Anzahl von Sekunden wie lange das Cookie gespeichert wird, den Wert könnest du halt ändern.

    31104000 = 60 * 60 * 24 * 360 <- also 360 Tage

    Du kannst diesen Wert in den Funktionen user_login_check (Anmeldung über Formular) und user_auto_login_check (Anmeldung über Cookie) ändern.

    Sobald man angemeldet ist, bleibt man anhand der Session je nach Server für 30 Minuten oder so angemeldet, selbst wenn man gar kein Cookie setzen würde.
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    neoLitic Mitglied
    Registriert seit
    21.09.2009
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    Hallo Nex4T,

    danke erstmal für die schnelle Antwort zunge

    Aber das habe ich gelesen ...

    Ich versteh es aber nicht?!

    Wenn ich in die aktuelle user.php rein schaue und mir die Beispiele weiter oben in diesem Thread anschaue hat sich da das ganze etwas geändert lächeln daher auch die Frage.

    function user_set_cookie($id, $cryptedPassword) {
        $cookieString = $id . '=' . md5(DBUSER . $cryptedPassword);
        setcookie($_SESSION['authsess'], $cookieString , strtotime('+1 year'), '/' );
    }


    Gehe ich richtig in der Annhame das hier die Cookie lifetime auf 1 Jahr gesetzt wird?

    function user_logout () {
      #global $allgAr;
      #$_SESSION = array();
      #$_SESSION['authgfx'] = $allgAr['gfx'];
      user_set_guest_vars();
      db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
      setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #if (isset($_COOKIE[session_name()])) {
      #  setcookie(session_name(), '', time()-99999999999931104000, '/');
      #}
      #setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #session_destroy();
    }



    Vermute ich richtig, das hier evtl. an den Sekunden angeben etwas geändert werden muss?

    Danke vorab.
    Fachinformatiker
    und kein Programmierer ... sorry zunge
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    Bin mir nicht sicher ob dies ein Jahr ist aber du liegst zumindest Korrekt, an dem Wert spielen und dann wird das lächeln
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    neoLitic Mitglied
    Registriert seit
    21.09.2009
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von neoLitic
    Hallo zusammen,

    das Thema ist auch 2015 noch interresant.

    Daher die Frage mit der aktuellen ilch Version (1.1 P) welche Änderungen müssen in der user.php / login.php / boxen_login.php getätigt werden, dass

    - das bei anmeldung nach 30 Minuten bzw. inaktivität von 30 Minuten eine automatische abmeldung erfolgt

    - das bei auswahl von autologin, das cookie für 1 Tag bestehen bleibt

    Vielen Dank vorab für eure Hilfe.


    Hallo Nex4T,

    wenn ich mit diesem Wert spiele, erreiche ich in der Standardkonfiguration das die allgemeine cookie Laufzeit geändert wird.
    Das wäre dann die Antwort auf den zweiten Teil meiner Frage.

    Aber nicht für 1 bzw. die Änderungen die in der Programmierung die seit 2009 stattgefunden haben.

    Hast du mir da vielleicht auch ein paar Tipps?

    Danke vorab.


    PS: Vielleicht kannst du mir die folgende Funktion erklären
    function user_logout () {
      #global $allgAr;
      #$_SESSION = array();
      #$_SESSION['authgfx'] = $allgAr['gfx'];
      user_set_guest_vars();
      db_query("UPDATE prefix_online SET uid = ".$_SESSION['authid']." WHERE sid = '".session_id()."'");
      setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #if (isset($_COOKIE[session_name()])) {
      #  setcookie(session_name(), '', time()-99999999999931104000, '/');
      #}
      #setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );
      #session_destroy();
    }


    Was bedeutet in diesem Fall time() -999999999999
    Die 999999999999 sind 360 Tage
    Hatte auch hier schon auf geringere Werte geändert abe ohne Erfolg.


    Zuletzt modifiziert von neoLitic am 09.10.2015 - 10:03:57
    Fachinformatiker
    und kein Programmierer ... sorry zunge
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    Der Wert wird in deiner Datenbank im prefix_online gespeichert, dort müsstest du dann halt Manuell alle abändern. Wie du in Zeile 9 siehst : am ende der Zahl 31104000 dies Solte einem Jahr entsprechen!


    Zuletzt modifiziert von Nex4T am 09.10.2015 - 10:08:18
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    neoLitic Mitglied
    Registriert seit
    21.09.2009
    Beiträge
    20
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von Nex4T
    Der Wert wird in deiner Datenbank im prefix_online gespeichert, dort müsstest du dann halt Manuell alle abändern. Wie du in Zeile 9 siehst : am ende der Zahl 31104000 dies Solte einem Jahr entsprechen!


    Zuletzt modifiziert von Nex4T am 09.10.2015 - 10:08:18


    ??????????????????????????????????????????????????????????????????????

    OK, ich glaube ich steh auf dem Schlauch...

    in der DB prefix_online wird gespeichert:

    uptime | sid | ipa | uid

    Was soll ich jetzt ändern?

    Die Uptime? / Wieso? - zum Test? - OK - 1 Minute teste ich sonst immer mit warten xD

    ---------------------------------------------------------------------------

    Kannst du mir die logout funktion erklären?
    Vllt. auch den Zusammenhang mit der Funktion user_set_cookie ( Was hier die Angabe der Zeit angeht bzw. ob es dort einen festen Zusammenhang gibt)

    Danke.
    Fachinformatiker
    und kein Programmierer ... sorry zunge
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Du kannst die user_set_cookie funktion leeren, wenn du nicht willst, dass ein Cookie zum Speichern des Logins gesetzt wird.

    Also
    function user_set_cookie($id, $cryptedPassword) {
    }


    Dann muss man sich bei jedem neuen Seitenbesuch (Also wenn man den Browser schließt ist der Besuch vorbei) neu einloggen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    ZitatZitat geschrieben von neoLitic via PM

    Vielleicht drücke ich mich auch falsch aus?

    Ich würde gerne die Lösung mit der "Autologin checkbox" nutzen und dazu eben die Variation das eben das Cookie gelöscht wird oder für eine bestimmte Zeit bestehen bleibt.

    Ja nach Nutzung der Checkbox.

    Ich scheitere aber an den Änderungen seit 2009 im Script.
    Da fehlen mir dann die notwendigen Programmierkentnisse.

    Es wäre daher super wenn du mir vielleicht ein paar Tipps geben könntest wie ich diese Ziel erreichen kann?!

    Vielen Dank vorab für deine Hilfe.


    Ok wenn du das mit der Autologin checkbox nutzen willst, wie im Code von David erläutert, dann musst du die Ausführung der Funktion zum Setzen des Cookies (user_set_cookie) an die Auswertung der Checkbox hängen.

    -> Also in der user_login_check Funktion

    if (isset($_POST['autologin'])) {
      user_set_cookie($row['id'], $row['pass']);
    }



    Und um auch noch auf deine andere Frage einzugehen,

    setcookie(session_und_cookie_name(), "", time()-999999999999, "/" );

    in der logout Funktion löscht das Cookie, indem es die "Lebenszeit" in die Vergangenheit setzt.


    Zuletzt modifiziert von Mairu am 10.10.2015 - 16:45:33
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Kritik und Verbesserungen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten