------------------ %_SESSION VARIABLE ------------------ ----------- DESCRIPTION ----------- NOTE: All PTM Session modification code should be written in PREPROCESS tags. Any session modification taking place outside of PREPROCESS tags will be ignored. The %_SESSION variable is the crossroads for cookie-based PTM Sessions. PTM Sessions allow for a group of cookie values to be stored in a group with a scrambled, unique ID number (60+ characters in length). Optionally, an alternate developer-selected ID number may be used. The ID is stored in a cookie named PTMSESSIONID. In fact, all PTM Session related cookies begin their name with "PTMSESSION" and then the name of the session variable is appended. Therefore, %_SESSION works almost exactly like the %_COOKIES hash, except that it only stores PTM Session cookies. When the session cookies are read in, their "PTMSESSION" prefix is removed before being placed in the %_SESSION hash. The only session variable required in a PTM Session is the previously mentioned ID number, which is stored as "ID" in %_SESSION and as a cookie named "PTMSESSIONID" in the user's browser. The %_SESSION variable is structured similar to the following: %_SESSION = ( ID => &session_id(), NAME => 'username', DOMAIN => '.mysite.com', PATH => '/', ); The %_SESSION keys (PTM Session variable names) can be accessed as a list (array) with Perl's "keys" command like so: @var_names = keys %_SESSION; The variable values can be accessed by referencing the specific name of the requested variable: $session_id = $_SESSION{'ID'}; Notice that, when referencing a specific variable value, the '%' is changed to a '$' when referencing the hash, as you are referencing a specific value and not the entire hash. When you wish to start a new PTM session, the start_session() function is used. Likewise, to end a PTM session, the end_session() function is used. To change anything during a PTM session the values stored in %_SESSION must be modified. New session values can be added via the session_add() function, and the session values can be deleted with the session_delete() function. Alternately, you may modify the values within the %_SESSION hash manually. Whichever method of session modification you choose, after modifying the %_SESSION hash, the update_session() function MUST be called, otherwise your session changes will be ignored when the user changes pages. Also, the is_session() function, which tells whether or not a PTM Session is currently in progress, simply bases its response on whether or not $_SESSION{'ID'} is defined. If the session value 'ID' is not defined, then as far as your PTM script is concerned, no session is in progress. In other words, don't delete the session ID. All PTM Session related code should be written in PREPROCESS tags, as cookies need to be assigned BEFORE the HTTP headers are written. Any session modification taking place outside of PREPROCESS tags will be ignored. -------------- USAGE EXAMPLES -------------- -------------------------------------------------------------------------- Example 1: Starting a Cookie-Based PTM Session Based On a POSTed User Name -------------------------------------------------------------------------- ------------------------------------------------ Example 2: Adding a "Color" Value to the Session ------------------------------------------------ --------------------------------------------------------------------- Example 3: Manually adding a Session Value (Same Effect as Example 2) --------------------------------------------------------------------- ---------------------------------------------------- Example 4: Ending a Session, If One Currently Exists ---------------------------------------------------- ------------------------------------------------------------------------ Example 5: Displaying a PTM Session Value to the User with a DISPLAY Tag ------------------------------------------------------------------------ Hello , Welcome Back! -------- SEE ALSO -------- TAGS PREPROCESS VARIABLES %_COOKIES, $_POST, %_SET_COOKIES FUNCTIONS delete_cookie(), end_session(), is_session(), session_add(), session_delete(), session_domain(), session_id(), session_name(), session_path(), session_secure, set_cookie(), start_session(), update_session()