sas Thu Oct 3 03:54:37 2002 EDT Modified files: /phpdoc/en/reference/session reference.xml Log: Bring documentation a bit closer to reality
Index: phpdoc/en/reference/session/reference.xml diff -u phpdoc/en/reference/session/reference.xml:1.13 phpdoc/en/reference/session/reference.xml:1.14 --- phpdoc/en/reference/session/reference.xml:1.13 Sat Sep 14 17:26:46 2002 +++ phpdoc/en/reference/session/reference.xml Thu Oct 3 03:54:36 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.13 $ --> +<!-- $Revision: 1.14 $ --> <reference id="ref.session"> <title>Session handling functions</title> <titleabbrev>Sessions</titleabbrev> @@ -112,52 +112,32 @@ As of PHP 4.1.0, <varname>$_SESSION</varname> is available as global variable just like <varname>$_POST</varname>, <varname>$_GET</varname>, <varname>$_REQUEST</varname> and so on. - Not like <varname>$HTTP_SESSION_VARS</varname>, - <varname>$_SESSION</varname> is always global. Therefore, - <literal>global</literal> should not be used for - <varname>$_SESSION</varname>. + Unlike <varname>$HTTP_SESSION_VARS</varname>, + <varname>$_SESSION</varname> is always global. Therefore, you do not + need to use <literal>global</literal> for + <varname>$_SESSION</varname>. Please note that this documentation + has been changed to use <varname>$_SESSION</varname> everywhere. You can + substitute <varname>$HTTP_SESSION_VARS</varname> for + <varname>$_SESSION</varname>, if you prefer the former. </para> </note> <para> If <link - linkend="ini.track-vars"><literal>track_vars</literal></link> is - enabled and <link linkend="ini.register-globals"><literal>register_globals</literal></link> is disabled, only members of the global associative array - <varname>$HTTP_SESSION_VARS</varname> can be registered as session + <varname>$_SESSION</varname> can be registered as session variables. The restored session variables will only be available - in the array <varname>$HTTP_SESSION_VARS</varname>. - <example> - <title> - Registering a variable with <link - linkend="ini.track-vars"><literal>track_vars</literal></link> - enabled - </title> - <programlisting role="php"> -<![CDATA[ -<?php -session_start(); -if (isset($HTTP_SESSION_VARS['count'])) { - $HTTP_SESSION_VARS['count']++; -} -else { - $HTTP_SESSION_VARS['count'] = 0; -} -?> -]]> - </programlisting> - </example> + in the array <varname>$_SESSION</varname>. </para> <para> Use of <varname>$_SESSION</varname> (or <varname>$HTTP_SESSION_VARS</varname> with PHP 4.0.6 or less) is - recommended for security and code readablity. With - <varname>$_SESSION</varname> or - <varname>$HTTP_SESSION_VARS</varname>, there is no need to use + recommended for improved security and code readablity. With + <varname>$_SESSION</varname>, there is no need to use session_register()/session_unregister()/session_is_registered() - functions. Users can access session variable like a normal - variable. + functions. Session variables are accessible like any other + variables. <example> <title> Registering a variable with $_SESSION. @@ -178,7 +158,7 @@ </example> <example> <title> - Unregistering a variable with $_SESSION. + Unregistering a variable with $_SESSION and register_globals disabled. </title> <programlisting role="php"> <![CDATA[ @@ -190,26 +170,41 @@ ]]> </programlisting> </example> + <example> + <title> + Unregistering a variable with register_globals enabled, after + registering it using $_SESSION. + </title> + <programlisting role="php"> +<![CDATA[ +<?php +session_start(); +// With PHP 4.3 and later, you can also use simply use the prior example. +session_unregister('count'); +?> +]]> + </programlisting> + </example> </para> <para> If <link linkend="ini.register-globals"><literal>register_globals</literal></link> is enabled, then all global variables can be registered as session - variables and the session variables will be restored to - corresponding global variables. Since PHP must know which global - variables are registered as session variables, users must register - variables with session_register() function while - <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> - does not need to use session_register(). + variables and the session variables will be restored to corresponding + global variables. Since PHP must know which global variables are + registered as session variables, users need to register variables with + session_register() function. You can avoid this by simply setting entries + in <varname>$_SESSION</varname>. <caution> <para> If you are using - <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> + <varname>$_SESSION</varname> and disable <link linkend="ini.register-globals"><literal>register_globals</literal></link>, do not use <function>session_register</function>, <function>session_is_registered</function> and - <function>session_unregister</function>. + <function>session_unregister</function>, if your scripts shall work + in PHP 4.2 and earlier. You can use these functions in 4.3 and later. </para> <para> If you enable <link @@ -218,7 +213,7 @@ session variables are registered as global variables when session data is deserialized. Disabling <link linkend="ini.register-globals"><literal>register_globals</literal></link> - is recommended for both security and performance reason. + is recommended for both security and performance reasons. </para> </caution> <example> @@ -243,20 +238,21 @@ </example> </para> <para> - If both <link - linkend="ini.track-vars"><literal>track_vars</literal></link> and - <link + If <link linkend="ini.register-globals"><literal>register_globals</literal></link> - are enabled, then the globals variables and the - <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> - entries will reference the same value for already registered - variables. + is enabled, then the global variables and the + <varname>$_SESSION</varname> entries will automatically reference the + same value for session variables which were registered in prior session + instances. </para> <para> - If user use session_register() to register session variable, - <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> - will not have these variable in array until it is loaded from - session storage. (i.e. until next request) + Additionally, if you register a new session variable by using + <function>session_register()</function>, the entry in the global scope + and the <varname>$_SESSION</varname> entry will not reference the same + value until the next session start (this applies to PHP 4.2 and before + only). I.e. a modification to the global variable will not be reflected + by the <varname>$_SESSION</varname> entry. This is unlikely to matter in + practice and has been corrected in PHP 4.3. </para> </section> @@ -284,15 +280,15 @@ session id directly into URLs. </para> <para> - PHP is capable of doing this transparently when compiled with - <link linkend="install.configure.enable-trans-sid"> - <literal>--enable-trans-sid</literal></link>. If you enable this option, - relative URIs will be changed to contain the session id - automatically. Alternatively, you can use the constant - <literal>SID</literal> which is defined, if the client did not - send the appropriate cookie. <literal>SID</literal> is either of - the form <literal>session_name=session_id</literal> or is an empty - string. + PHP is capable of doing this transparently if compiled with <link + linkend="install.configure.enable-trans-sid"> + <literal>--enable-trans-sid</literal></link>. This option is always + enabled in PHP 4.2 and later. If you enable this option, relative URIs + will be changed to contain the session id automatically. Alternatively, + you can use the constant <literal>SID</literal> which is defined, if the + client did not send the appropriate cookie. <literal>SID</literal> is + either of the form <literal>session_name=session_id</literal> or is an + empty string. <note> <para> The <link linkend="ini.arg_separator.output">arg_separator.output</link>
-- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php