Hallo liebe Leute!
Ich hatte vor ner ganzen Weile schonmal gefragt, wieso die Session auf meinem WebSpace einfach nicht auslaufen will. Da hattet ihr mir dann geraten, ich soll mir halt soeine Art eigene Session-Expiry baun, indem ich die Zeit der letzten Aktion mit der aktuellen Zeit vergleiche, und dann die differenz der beiden mit nem Grenzwert der nicht überschritten werden darf. Das hab ich jetzt auch gemacht.
Ich habe eine Datei dologin.php, in der die Session-Variablen wie folgt gesetzt werden:
Soweit so gut, bis hierhin funktoiniert wohl auch alles. Allerdings habe ich dann in der nächsten Datei (loggedin.php) eine solche Abfrage eingebaut, damit ich prüfen kann ob die Zeit überschritten wurde:
Die ganzen Variablen-Umspeicherungen und das echo sind natürlich unprofessionell, sollten aber nur sein um zu sehen ob was mit den Zahlen nicht stimmt, und so ist es tatsächlich auch, undzwar wird folgendes auf der Seite ausgegeben:
Nick: ArSeN
Lastact: 1144920273
Expiry: 20
Now: 1144920273
Diff: 0
Das Problem ist also: Der "LastAct" (Letzte Aktion) ist immer gleich der Zeit time() logisch, hab ich in dologin.php ja auch so gesetzt. Aber eigentlich dachte ich mir das nur so, dass er dann den Rückgabewert in der Session-Variable speichert, und nicht die ganze Funktion ôO - wonach es momentan aber doch start aussieht.
Also dann, wäre nett wenn mir da jemand weiterhelfen kann, ich weiß nich wie ich das anstellen soll. Danke schonmal!
Mit freundlichen Grüßen
ArSeN
Ich hatte vor ner ganzen Weile schonmal gefragt, wieso die Session auf meinem WebSpace einfach nicht auslaufen will. Da hattet ihr mir dann geraten, ich soll mir halt soeine Art eigene Session-Expiry baun, indem ich die Zeit der letzten Aktion mit der aktuellen Zeit vergleiche, und dann die differenz der beiden mit nem Grenzwert der nicht überschritten werden darf. Das hab ich jetzt auch gemacht.
Ich habe eine Datei dologin.php, in der die Session-Variablen wie folgt gesetzt werden:
PHP-Code:
// Sitzungsvariablen setzen
// Auswahl der Daten
$arr = mysql_fetch_array(mysql_query("SELECT * FROM accounts WHERE nick = '$nick';"));
$expiry = mysql_fetch_array(mysql_query("SELECT * FROM einstellungen WHERE einstellung='time_session';"));
// Variablen registrieren (Session wird gültig für den Login)
session_register("id");
session_register("nick");
session_register("email");
session_register("regdate");
session_register("laston");
session_register("lastact");
session_register("expiry");
// Werte in Variablen schreiben
$_SESSION['id'] = $arr['id'];
$_SESSION['nick'] = $arr['nick'];
$_SESSION['email'] = $arr['email'];
$_SESSION['regdate'] = $arr['regdate'];
$_SESSION['laston'] = $arr['laston'];
$_SESSION['lastact'] = time();
$_SESSION['expiry'] = $expiry['wert'];
debInf("Alle Sessionvariablen OK");
PHP-Code:
session_start();
head();
function isLoggedIn() {
$nick = $_SESSION['nick'];
$lastact = $_SESSION['lastact'];
$expiry = $_SESSION['expiry'];
$now = time();
$diff = time() - $lastact;
echo "Nick: $nick<br />Lastact: $lastact<br />Expiry: $expiry<br />Now: $now<br />Diff: $diff<br />";
return ((isset($_SESSION['nick']) && (time() - $_SESSION['lastact']) < $_SESSION['expiry']));
}
if (isLoggedIn()) {
Nick: ArSeN
Lastact: 1144920273
Expiry: 20
Now: 1144920273
Diff: 0
Das Problem ist also: Der "LastAct" (Letzte Aktion) ist immer gleich der Zeit time() logisch, hab ich in dologin.php ja auch so gesetzt. Aber eigentlich dachte ich mir das nur so, dass er dann den Rückgabewert in der Session-Variable speichert, und nicht die ganze Funktion ôO - wonach es momentan aber doch start aussieht.
Also dann, wäre nett wenn mir da jemand weiterhelfen kann, ich weiß nich wie ich das anstellen soll. Danke schonmal!
Mit freundlichen Grüßen
ArSeN
Kommentar