When you include a php file in your current script it's included, not processed separately, thus it's still within the same page and the current page hasn't finished processing.
Thus, session is not set yet. This is the expected behaviour.
If you need to load a page after setting session data, you should set session data and then send a redirection or refresh header (remember not to send anything, not even whitespace before sending headers).
Always consider session data to be updated after the next page load (as in http request completed).
Session Handling
- Introduction
- Installing/Configuring
- Predefined Constants
- Examples
- Sessions and security
- Session Functions
- session_cache_expire — Return current cache expire
- session_cache_limiter — Get and/or set the current cache limiter
- session_commit — Alias of session_write_close
- session_decode — Decodes session data from a string
- session_destroy — Destroys all data registered to a session
- session_encode — Encodes the current session data as a string
- session_get_cookie_params — Get the session cookie parameters
- session_id — Get and/or set the current session id
- session_is_registered — Find out whether a global variable is registered in a session
- session_module_name — Get and/or set the current session module
- session_name — Get and/or set the current session name
- session_regenerate_id — Update the current session id with a newly generated one
- session_register — Register one or more global variables with the current session
- session_save_path — Get and/or set the current session save path
- session_set_cookie_params — Set the session cookie parameters
- session_set_save_handler — Sets user-level session storage functions
- session_start — Initialize session data
- session_unregister — Unregister a global variable from the current session
- session_unset — Free all session variables
- session_write_close — Write session data and end session
Sessions
Madster
29-Jul-2008 05:45
29-Jul-2008 05:45
mike at basementideas dot com
08-Jul-2008 10:05
08-Jul-2008 10:05
The note about an included file not being able to access the sessions is not true. You just have to do a session_start(); in the included file.
This is what drove me here today, because I was noticing the same thing. But I tried the above on a whim and it works fine. You wouldn't think you'd need to start a session twice, but I guess the scripts are looked on as separate in that regard.
Mike
pushedx
02-Jul-2008 08:01
02-Jul-2008 08:01
Here is something to watch out for when working with sessions.
Let's say you have two pages, Page A and Template Z. If Page A sets session data and includes Template Z, the session data is not properly registered for the execution of Template Z due to how session data is written *after* a script has executed [1].
As a result, your second page will not have the right session data, so you are a bit in a pickle. I'm sure there are other work arounds, perhaps with cookies or flat files, but you cannot use session data in that fashion.
The reason I have this setup is because I will have a number of Page A-Z's that will contain page specific content and one Template Z page that renders each page's specific content in the site layout. This way, the site content changing is independent of the style the site uses and the site style can change without modifying the actual content. It's a dynamically configurable site template design.
[1] See the "session_write_close" documentation page.
