anpera.net
https://anpera.dyndns.org/phpbb3/

Logout Function
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=2719
Seite 1 von 1

Autor:  Ray [ Mi 02 Aug, 2006 09:24 ]
Betreff des Beitrags:  Logout Function

Wollt ma wissen welche function in logd dafür zuständig ist das der user nach 15 min inaktivität oder des nichts tuhens ausgeloggt wird. Und wie sie vom aufbau her funzt also wenn wer die function noch beschreiben kann wärs super ^^

Autor:  Kevz [ Mi 02 Aug, 2006 10:03 ]
Betreff des Beitrags: 

Siehe dazu common.php:
[php]if (time()-getsetting("LOGINTIMEOUT",900) > $session['lasthit'] && $session['lasthit']>0 && $session['loggedin']){
$session=array();
$session['message'].="`nDeine Session ist abgelaufen!`n";
}[/php]

Für den User an sich:
[php]if (!$session[user][loggedin] || (0 && (date("U") - strtotime($session[user][laston])) > getsetting("LOGINTIMEOUT",900)) ){
$session=array();
redirect("index.php?op=timeout","Account ist nicht eingeloggt, aber die Session denkt, er ist es.");
}[/php]

Autor:  Ray [ Do 03 Aug, 2006 11:46 ]
Betreff des Beitrags: 

und wie würde so etwas ohne logd code aussehen? mit den standart php?
ach und fehlt da nicht die stelle wo loggedin auf 0 gesetzt wird ôÔ sonst ist er ja laut datenbank immer noch eingeloggt. Ach und wenn ich mich nicht recht täusche ist es in phph doch folgender maßen ein befehl SQL oder sonstiges kann nur beim updaten einer seite ausgeführt werden wie kann dann eine person ausgelogt werden wenn sie nichts macht? es wird ja keine seite aktualisiert oder neu geladen... und wenn man das fenster durch den button ganz oben rechts schlie0ßt das gleiche wie funktioniert es eigentlich das der user nach 15 mins ausgelogt wird obwohl er nichts macht?

Autor:  Kevz [ Do 03 Aug, 2006 13:53 ]
Betreff des Beitrags: 

Das ist doch sozusagen das gleiche verfahren?
Wenn du den Schnippsel genauer betrachtest, sieht man das die Session des Users überprüft ist - ist diese Überschritten so wird er Automatisch ausgeloggt!

Viel mehr ist da nicht zu erklären und wenn du mehr bezüglich des PHP Codes Wissen willst, dann geh am besten in ein Forum wo Sie sich darauf spezialisiert haben.

Letztendlich gehts hier um LotGD und kein Support für LotGD Scripte die Abseits dessen liegen/sind. Btw. ein genaueres betrachten der PHP Manual kann sehr Sinnvoll sein.

Autor:  Deus X Machina [ So 03 Jan, 2010 22:59 ]
Betreff des Beitrags:  Re: Logout Function

Ich weiß, der Thread ist ziemlich alt, aber nachdem der Thread Titel so gut passt wollte ich keinen neuen aufmachen:
Ich möchte einen zusätzlichen Logout anbringen in einem auf der Anpera Version basierenden Logd.
Dazu hab ich mir die verschiedenen Logouts angesehen, und wurde auch gut fündig, allerdings auch verunsichert wie genau das ablaufen muss, da eine davon $this->bbcode_second_pass_code('', 'saveuser();')drinnen hat und die anderen jeweils einen Datenbank Befehl. Ich möchte nichts vergessen durch einen unvollständigen Logout, auf das ich dann erst viel später draufkomme, deswegen würde mich interessieren, ob das "saveuser();" einfach den direkten Datenbankbefehl ersetzt (was ich vermute).
Und wenn ja, dann müsste das folgende ja ein vollständiger Logout sein:$this->bbcode_second_pass_code('', 'if ($_GET['whateverop'] == "anotherlogout"){
if $session['user']['loggedin']{
$session['user']['loggedin']=0;
$session['user']['location']=9;
debuglog("hat sich irgendwo ausgeloggt");
$sql="UPDATE accounts SET loggedin=0,location=9 WHERE acctid = ".$session['user']['acctid'];
db_query($sql) or die(sql_error($sql));
}
$session=array();
redirect("index.php");
}')
oder?

Autor:  Welv [ Mo 04 Jan, 2010 05:54 ]
Betreff des Beitrags:  Re: Logout Function

or die(sql_error($sql)); kannst du mal getrost weglassen, da dies schon in der db_query funktion enthalten ist.

saveuser() speichert die $session daten ab und wird sowieso in redirekt() und im page_footer() aufgerufen, was wohl reicht.

Darum wäre auch

$session['user']['loggedin']=0;
$session['user']['location']=9;


in kombination mit

$sql="UPDATE accounts SET loggedin=0,location=9 WHERE acctid = ".$session['user']['acctid'];
db_query($sql);


sinnlos.


Ist noch sehr früh, also keine Garantie für Richtigkeit ^^

Autor:  Franzi [ Mo 04 Jan, 2010 11:41 ]
Betreff des Beitrags:  Re: Logout Function

Also ich habe noch

$config = unserialize($session['user']['donationconfig']);
$session['user']['donationconfig']=serialize($config);


beim Logout eingefügt, damit ein User auch das behält was er sich mit Dp gekauft hat(Gorlinda usw.)

Autor:  Tidus [ Mo 04 Jan, 2010 15:30 ]
Betreff des Beitrags:  Re: Logout Function

Franzi bei aller liebe, das wird an den Stellen an denen es wichtig ist schon gemacht, das braucht man beim logout gaaanz sicher nicht noch einmal, in der jägerhütte wird es gemacht, und der user wird mit jedem pagehit gespeichert also brauchst du keine verlust ängste zu haben

Autor:  Welv [ Mo 04 Jan, 2010 15:42 ]
Betreff des Beitrags:  Re: Logout Function

Zitat:
$config = unserialize($session['user']['donationconfig']);
$session['user']['donationconfig']=serialize($config);


Ist das nicht n bisschen sinnfrei?

Autor:  Eliwood [ Mo 04 Jan, 2010 16:00 ]
Betreff des Beitrags:  Re: Logout Function

Welv hat geschrieben:
Zitat:
$config = unserialize($session['user']['donationconfig']);
$session['user']['donationconfig']=serialize($config);


Ist das nicht n bisschen sinnfrei?

Natürlich. Kann man sogar "kürzen"
$this->bbcode_second_pass_code('', '$session['user']['donationconfig'] = serialize(unserialize($session['user']['donationconfig']));')

Autor:  Deus X Machina [ Mo 04 Jan, 2010 16:07 ]
Betreff des Beitrags:  Re: Logout Function

Danke für die Hilfe, wie gesagt ich hatte mich an den vorhandenen Logouts orientiert, und nachdem $session['user']['loggedin']=0; und $session['user']['location']=9; da vorkamen hab ichs erstmal reingegeben.
Dass man hier: "db_query($sql) or die(sql_error($sql));" den "or die" Teil weglassen kann ist auch gut zu wissen, da das in allen Logout Funktionen von Logd vorhanden ist, und wenn man das Wissen über die exakte Funktion noch nicht hat, dann glaubt man man braucht das unbedingt ;-)
Also jetzt bleibt mir folgendes über, das müsste dann ausreichen hoffe ich$this->bbcode_second_pass_code('', 'if ($_GET['whateverop'] == "anotherlogout"){
if $session['user']['loggedin']{
debuglog("hat sich irgendwo ausgeloggt");
$sql="UPDATE accounts SET loggedin=0,location=9 WHERE acctid = ".$session['user']['acctid'];
db_query($sql)
}
$session=array();
redirect("index.php");
}')sieht jedenfalls schon schlanker aus, ich bin froh über alles was ich dazulerne ;)

Autor:  Welv [ Mo 04 Jan, 2010 16:18 ]
Betreff des Beitrags:  Re: Logout Function

In LoGD gibts viel Überflüssiges und da es auch viele gibt die mit LoGD php lernen, lernen sie auch die Fehler, weshalb sowas wie "or die();" und nicht gesetzte ' in Arrayschlüssel noch immer vorkommt.


Da db_query() eigentlich nur Sinn macht wenn ein anderer User bearbeitet wird ( btw, bei dir fehlt da ein ; am Schluss der Funktion) und saveuser() ev das eben geänderte mit der aktuellen $session (die loggedin noch auf true hat) überschreibt, würde ich bei $session bleiben.

Autor:  Minerva [ Mo 04 Jan, 2010 16:25 ]
Betreff des Beitrags:  Re: Logout Function

also bei mir hat immer folgendes gereicht..
*hat das, wenn sie sich recht entsinnt, einfach aus der login.php rausgenommen und angepasst*
$this->bbcode_second_pass_code('', '
elseif ($_GET['op']=="logout"){
$session['user']['loggedin']=0;
$session['user']['location']=6;
saveuser();
$session=array(); //Sinvoll? Keine Ahnung, weiß nicht mehr woher das kam
redirect("index.php");
}
')
Ob es ganz korrekt ist wie es da steht ist nicht garantiert.
Ist in jedem Fall sehr Platzsparend und Beschwerden gab es auch nie damit ôO
War bie mir auf den Stadtplätzen so hinverlinkt (also nicht village, hatte damals mehrer Städte)

nicht vergessen!! die Location auch in der login.php definieren!

mfg Dat Mine

Autor:  Eliwood [ Mo 04 Jan, 2010 16:49 ]
Betreff des Beitrags:  Re: Logout Function

@Deus X Machina: Das ist wichtig die beiden Stellen.
$this->bbcode_second_pass_code('', '$session['user']['loggedin']=0;
$session['user']['location']=9;')
Die erste Zeile sorgt dafür, dass man wirklich ausgeloggt ist.
Die zweite sagt, wo du dich ausgeloggt hast - die Login schickt dich dann an die richtigen Orte. Nicht-Setzen bedeutet 0 - und das bedeutet Felder.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/