Hi,
hier mein neuer Code, offen zur Diskussion.
// session stoppen wenn entsprechendes Signal kommt
if(array_key_exists('logout', $_POST))
{
// vor destroy() muss Session nochmals gestartet werden, sonst PHP-Warning bei destroy()
session_id($_POST['logout']);
session_start();
session_destroy();
unset($_SESSION);
}
// SESSION-ID nicht uebergeben => neuer Aufruf der Seite
if(!array_key_exists('SESSION_ID', $_POST))
{
$_SESSION['logged_in'] = FALSE; // to avoid undefinded index notices
$_POST['SESSION_ID'] = md5(uniqid('')); // irgendwas eindeutiges ... session_id() oder session_id_regenerate() lieferten hier immer ''/FALSE
$_POST['SESSION_NAME'] = 'pro_ject_'.uniqid(''); // nochmal irgendwas eindeutiges
// ID und Name automatisch ueberall an URL anhaengen ... bequem, aber haesslich
output_add_rewrite_var('SESSION_ID', $_POST['SESSION_ID']);
output_add_rewrite_var('SESSION_NAME', $_POST['SESSION_NAME']);
}
// SESSION-ID uebergeben => entsprechende Session wieder starten
else
{
session_id($_POST['SESSION_ID']);
session_name($_POST['SESSION_NAME']);
session_start();
}
// Login-Fenster anzeigen, liefert nur Code wenn Login noetig
$login_window = new LoginWindow(array());
if(strlen($output = $login_window->get_html_code()) > 0)
show($output);
// ... ansonsten wurde der User erfolgreich eingelogged
else
$_SESSION['logged_in'] = TRUE;