Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
| [ Anmelden zum schreiben ] |
| User beim ausloggen löschen | |||
|---|---|---|---|
| Heinz2 Mitglied
Posts: 18 |
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?
MfG verwendete ilchClan Version: 1.1 betroffene Homepage: www.offroadracing-pilz.de |
||
| Mr.Anderson Mitglied
Posts: 89 |
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
Posts: 2123 |
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
Posts: 89 |
Was man nicht alles weiss!^^
![]() Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen. Meine Heimat^^ |
||
| Rock@wulf Ilch 2.0 Entwickler
Posts: 1331 |
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
Posts: 18 |
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
Posts: 2123 |
@ 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
Posts: 858 |
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
Posts: 2123 |
@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
Posts: 858 |
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 ![]() www.sidemax.de |
||
| Heinz2 Mitglied
Posts: 18 |
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
Posts: 2123 |
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;"> </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 <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
Posts: 18 |
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
Posts: 2123 |
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
Posts: 18 |
Ich danke nochmals für die Hilfe. Sollte man in eine neuere Version übernehmen.
|
||
| olos Mitglied
Posts: 141 |
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
Posts: 53 |
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
Posts: 53 |
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
Posts: 53 |
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
Posts: 12617 |
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 ] |