dr.Colossos: pro Tab eine eigenstaendige Session

Beitrag lesen

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;