PHP4 session may not work as it should, unless you use it consistent way. i.e. Use session_(un)register() and only use globals, OR enable track_vars and disable register_globals and only use $HTTP_SESSION_VARS w/o session_(un)register(). It may work even if register_globals is on. I didn't test session module with this configuration enough. Following code works as expected on my systems (PHP4.0.4-PHP4.0.5RC1/Apache SAPI/W2K and PHP4.0.4-PHP4.0.4RC6/Apache SAPI/Linux at least) === code begin === <?php require_once('lib/session.inc'); // Define my custom session handlers and start session ?> <html> <head> <title>Session Test</title> </head> <body bgcolor="#FFFFFF"> <pre> <?php if (isset($HTTP_GET_VARS['a'])) { $HTTP_SESSION_VARS['a'] = array( 'a'=>1, 'b'=>2 ); print_r($HTTP_SESSION_VARS); } elseif (isset($HTTP_GET_VARS['b'])) { unset($HTTP_SESSION_VARS['a']['a']); print_r($HTTP_SESSION_VARS); } else { print_r($HTTP_SESSION_VARS); } ?> </pre> </body> </html> ==== code end ==== It should work as expected when you enable track_vars AND disable register_globals in your php.ini. The reason why there is session_register()/unregister() is there is no way for session module to know which variables are session variables. With $HTTP_SESSION_VARS, session module knows all variable in $HTTP_SESSION_VARS are session variables. So programmer does not have to use session_(un)register(). There is also known problem that $HTTP_SESSION_VARS does not work like other $HTTP_*_VARS. You will see what I mean if you write some test codes with register_globals = on. I don't know why many people use register_globals = on track_vars = off magic_quote = on Life would be much easier with register_globals = off track_vars = on magic_quote = off Hope this helps, -- Yasuo Ohgaki ""Tobias Talltorp"" <[EMAIL PROTECTED]> wrote in message 9bempj$a77$[EMAIL PROTECTED]">news:9bempj$a77$[EMAIL PROTECTED]... > I did it! > Too much work for something as simple as this though IMO. I think I will > write a function for this... > > <? > session_start(); > $newarray = $HTTP_SESSION_VARS["array"]; > unset ($newarray["one"]); > $array = $newarray; > session_register("array"); > ?> > > Thanks, > // Tobias > > > ""Yasuo Ohgaki"" <[EMAIL PROTECTED]> wrote in message > 9bdeag$88r$[EMAIL PROTECTED]">news:9bdeag$88r$[EMAIL PROTECTED]... > > You are registered $array as session, > > You need to unset() element. I think it should work. > > > > Regards, > > -- > > Yasuo Ohgaki > > > > > > ""Tobias Talltorp"" <[EMAIL PROTECTED]> wrote in message > > 9bd8un$kqt$[EMAIL PROTECTED]">news:9bd8un$kqt$[EMAIL PROTECTED]... > > > I know how to unset a specific value in an ordinary array: > > > unset ($array["one"]); > > > How do I do this if my array is in a session? > > > > > > Here is my code: > > > <? > > > session_start(); > > > $array = array(one=> "number one", two=> "Number two", three=> "Number > > > three"); > > > session_register("array"); > > > ?> > > > > > > I tried this... Didn't work: > > > <? > > > session_start(); > > > session_unregister("array[one]"); > > > ?> > > > > > > Thanks, > > > // Tobias Talltorp > > > > > > > > > > > > > > > -- > > > PHP General Mailing List (http://www.php.net/) > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > To contact the list administrators, e-mail: [EMAIL PROTECTED] > > > > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > To contact the list administrators, e-mail: [EMAIL PROTECTED] > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > To contact the list administrators, e-mail: [EMAIL PROTECTED] > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to