» Forum » Clanscript » Kritik und Verbesserungen » User beim ausloggen löschen
  Mitglieder   |   Gallery   |   FAQ's   |   Regeln

[ Anmelden zum schreiben ]

User beim ausloggen löschen
Heinz2
Mitglied
0 Beitragspunkte
Posts: 18

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 09:56:25     Zitieren
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? mann

MfG


verwendete ilchClan Version: 1.1

betroffene Homepage: www.offroadracing-pilz.de
Mr.Anderson
Mitglied
0 Beitragspunkte
Posts: 89

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 10:04:00     Zitieren
Das liegt nicht an ilch, sondern am Browser, soweit ich weiss!


Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.
Meine Heimat^^
boehserdavid
Mitglied
2 Beitragspunkte
Posts: 2123

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 10:11:18     Zitieren
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-
Mr.Anderson
Mitglied
0 Beitragspunkte
Posts: 89

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 10:12:44     Zitieren
Was man nicht alles weiss!^^Smilie


Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.
Meine Heimat^^
Rock@wulf
Ilch 2.0 Entwickler
13 Beitragspunkte
Posts: 1331

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 10:21:20     Zitieren
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?


MFG Rock@wulf
Heinz2
Mitglied
0 Beitragspunkte
Posts: 18

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 10:38:00     Zitieren
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
boehserdavid
Mitglied
2 Beitragspunkte
Posts: 2123

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 11:26:18     Zitieren
@ 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-
freak
Mitglied
0 Beitragspunkte
Posts: 858

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 15:35:53     Zitieren
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


www.sidemax.de
boehserdavid
Mitglied
2 Beitragspunkte
Posts: 2123

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 17:24:27     Zitieren
@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-
freak
Mitglied
0 Beitragspunkte
Posts: 858

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.10.2007 - 21:18:31     Zitieren
Zitat 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


www.sidemax.de
Heinz2
Mitglied
0 Beitragspunkte
Posts: 18

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 27.10.2007 - 22:58:53     Zitieren
Zitat 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
boehserdavid
Mitglied
2 Beitragspunkte
Posts: 2123

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 31.10.2007 - 20:29:11     Zitieren
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-
Heinz2
Mitglied
0 Beitragspunkte
Posts: 18

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 03.11.2007 - 22:53:06     Zitieren
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
boehserdavid
Mitglied
2 Beitragspunkte
Posts: 2123

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 04.11.2007 - 05:08:31     Zitieren
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-
Heinz2
Mitglied
0 Beitragspunkte
Posts: 18

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 04.11.2007 - 22:10:46     Zitieren
Ich danke nochmals für die Hilfe. Sollte man in eine neuere Version übernehmen.
olos
Mitglied
1 Beitragspunkte
Posts: 141

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 29.07.2008 - 13:23:44     Zitieren
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.
>>>> www.sts-clan.de
executor
Mitglied
0 Beitragspunkte
Posts: 53

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 13.02.2009 - 23:03:54     Zitieren
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*#


Clanhomepage: www.the-clan.de.ht
Forum: teamheadshotexperts.foren-city.de/
My Homepage: www.executor.de.ht
executor
Mitglied
0 Beitragspunkte
Posts: 53

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 20.02.2009 - 12:16:02     Zitieren
Hat keiner ne Lösung für mich??

Gruß THE|#*eXecuT0r*#


Clanhomepage: www.the-clan.de.ht
Forum: teamheadshotexperts.foren-city.de/
My Homepage: www.executor.de.ht
executor
Mitglied
0 Beitragspunkte
Posts: 53

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 26.02.2009 - 20:24:57     Zitieren
Was ist denn los Community????

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

Sorry für den triplepost


Clanhomepage: www.the-clan.de.ht
Forum: teamheadshotexperts.foren-city.de/
My Homepage: www.executor.de.ht
Mairu
Coder
107 Beitragspunkte
Posts: 12617

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 28.02.2009 - 15:11:12     Zitieren
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

[ Anmelden zum schreiben ]