note 85341 added to function.session-name

From: Date: Tue, 26 Aug 2008 20:20:28 +0000
Subject: note 85341 added to function.session-name
Groups: php.notes 
Request: Send a blank email to php-notes+get-143845@lists.php.net to get a copy of this message
Here's a sample program I made to explore the operation of the session stuff. One thing I wanted to do was switch sessions in the middle of a script - where session_name doesn't automatically create or resume the corresponding session id... (anyone have a better idea?) <?php if ( $_REQUEST['sname'] ) { session_name($_REQUEST['sname']); } session_start(); $messages = ""; function show( $str ) { global $messages; $messages .= $str; } function show_sess_vars() { foreach ( $_SESSION as $key => $val ) { show("Session var '$key': \t'$val'\n"); } } show("Session name: \t" . session_name() . "\n"); show("Session ID: \t" . session_id() . "\n"); foreach ( $_REQUEST as $key => $val ) { if ( $key == 'regenerate' ) { session_regenerate_id(); show("session_regenerate_id();\n"); show("Session name: \t" . session_name() . "\n"); show("Session ID: \t" . session_id() . "\n"); } else if ( $key == 'clear' ) { $_SESSION = array(); show("\$_SESSION = array();\n"); } else if ( $key == 'switch' ) { show("Will attempt to switch session name.. vars:\n"); show_sess_vars(); session_write_close(); $res = session_name($val); show("session_name($val) - res: $res\n"); session_start(); show("Session name: \t" . session_name() . "\n"); show("Session ID: \t" . session_id() . "\n"); } else if ( $key == 'switch2' ) { show("Will attempt to switch session name.. vars:\n"); show_sess_vars(); session_write_close(); show("session_write_close();\n"); $sess_id = $_COOKIE[$val]; if ( $sess_id ) { show("session '$val' exists, resuming..\n"); //unset($_SESSION); // to make sure - this should be reloaded below session_name( $val ); session_id( $sess_id ); session_start(); // fills $_SESSION from the named session } else { show("creating new session '$val'...\n"); session_name( $val ); session_start(); session_regenerate_id(); // create new (copy of old), leave old alone $_SESSION = array(); // wipe data clean for a fresh session show("regenerated ID and wiped SESSION superglobal\n"); } show("Session name: \t" . session_name() . "\n"); show("Session ID: \t" . session_id() . "\n"); } else { if ( $_COOKIE[$key] ) { show("Cookie: \t'$key': \t'$val'\n"); } else { show("Setting session var: \t'$key': \t'$val'\n"); $_SESSION[$key] = $val; } } } show("----\nSession vars:\n"); show_sess_vars(); if ( false ) { session_write_close(); session_name("edit_assembly"); session_start(); show("Session name: \t" . session_name() . "\n"); show("Session ID: \t" . session_id() . "\n"); show_sess_vars(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title> PHP session testing </title> <style type='text/css'> body { background-color: gray; } #content { background-color: white; width: 70%; margin: 1em auto 1em auto; padding: 2em; font-family: Verdana, monospace; font-size: 10pt; } </style> </head> <body> <div id='content'> <h1> PHP session test: </h1> <pre><?php echo $messages; ?></pre> </div> </body> </html> ---- Server IP: 216.235.15.211 Probable Submitter: 206.45.72.49 ---- Manual Page -- http://www.php.net/manual/en/function.session-name.php Edit -- https://master.php.net/note/edit/85341 Del: integrated -- https://master.php.net/note/delete/85341/integrated Del: useless -- https://master.php.net/note/delete/85341/useless Del: bad code -- https://master.php.net/note/delete/85341/bad+code Del: spam -- https://master.php.net/note/delete/85341/spam Del: non-english -- https://master.php.net/note/delete/85341/non-english Del: in docs -- https://master.php.net/note/delete/85341/in+docs Del: other reasons-- https://master.php.net/note/delete/85341 Reject -- https://master.php.net/note/reject/85341 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#143845) next »