yohgaki Mon Jan 7 06:23:25 2002 EDT Modified files: /phpdoc/en/functions session.xml Log: Add more description for $_SESSION and $HTTP_SESSION_VARS. # Hopefully, there will be less bug reports.
Index: phpdoc/en/functions/session.xml diff -u phpdoc/en/functions/session.xml:1.70 phpdoc/en/functions/session.xml:1.71 --- phpdoc/en/functions/session.xml:1.70 Sat Dec 22 12:18:41 2001 +++ phpdoc/en/functions/session.xml Mon Jan 7 06:23:25 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.70 $ --> +<!-- $Revision: 1.71 $ --> <reference id="ref.session"> <title>Session handling functions</title> <titleabbrev>Sessions</titleabbrev> @@ -51,6 +51,12 @@ linkend="ini.track-vars"><literal>track_vars</literal></link> is always turned on. </para> + <para> + As of PHP 4.1.0, $_SESSION is available as global variable just + like $_POST, $_GET, $_REQUEST and so on. Not like + $HTTP_SESSION_VARS, $_SESSION is always global. Therefore, + <literal>global</literal> should not be used for $_SESSION. + </para> </note> <para> @@ -71,8 +77,51 @@ <programlisting role="php"> <![CDATA[ <?php -session_register("count"); -$HTTP_SESSION_VARS["count"]++; +if (isset($HTTP_SESSION_VARS['count'])) { + $HTTP_SESSION_VARS['count']++; +} +else { + $HTTP_SESSION_VARS['count'] = 0; +} +?> +]]> + </programlisting> + </example> + </para> + <para> + Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is + recommended for security and code readablility. With $_SESSION or + $HTTP_SESSION_VARS, there is no need to use + session_register()/session_unregister()/session_is_registered() + functions. Users can access session variable like a normal + variable. + <example> + <title> + Registering a variable with $_SESSION. + </title> + <programlisting role="php"> +<![CDATA[ +<?php +// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less +if (!isset($_SESSION['count'])) { + $_SESSION['count'] = 0; +} +else { + $_SESSION['count']++; +?> +]]> + </programlisting> + </example> + <example> + <title> + Unregistering a variable with $_SESSION. + </title> + <programlisting role="php"> +<![CDATA[ +<?php +// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less +unset($_SESSION['count']); + ?> ]]> </programlisting> @@ -83,8 +132,12 @@ 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. - <example> + corresponding global variables. Since PHP must know which global + variables are registered as session variables, users must register + variables with session_register() function while + $HTTP_SESSION_VARS/$_SESSION does not need to use + session_register(). + <example> <title> Registering a variable with <link linkend="ini.register-globals"><literal>register_globals</literal></link> @@ -93,8 +146,13 @@ <programlisting role="php"> <![CDATA[ <?php -session_register("count"); -$count++; +if (!session_is_registered('count')) { + session_register("count"); + $count = 0; +} +else { + $count++; +} ?> ]]> </programlisting> @@ -148,8 +206,13 @@ <programlisting role="php"> <![CDATA[ <?php -session_register ("count"); -$count++; +if (!session_is_registered('count')) { + session_register('count'); + $count = 1; +} +else { + $count++; +} ?> Hello visitor, you have seen this page <?php echo $count; ?> times.<p>; @@ -199,7 +262,9 @@ <literal>session.save_path</literal> defines the argument which is passed to the save handler. If you choose the default files handler, this is the path where the files are created. - Defaults to <literal>/tmp</literal>. + Defaults to <literal>/tmp</literal>. If + <literal>session.save_path</literal>'s path depth is more than + 2, garbage collection will not be performed. </simpara> <warning> <para> @@ -293,13 +358,13 @@ <listitem> <simpara> <literal>session.cookie_path</literal> specifies path to set - in session_cookie. Defaults to <literal>/</literal>. + in session_cookie. Defaults to <literal>/</literal>. </simpara> </listitem> <listitem> <simpara> <literal>session.cookie_domain</literal> specifies domain to - set in session_cookie. Default is none at all. + set in session_cookie. Default is none at all. </simpara> </listitem> <listitem> @@ -374,6 +439,20 @@ browser. </para> </note> + <simpara> + <function>session_start</function> will register internal output + handler for URL rewriting when <literal>trans-sid</literal> is + enabled. If a user uses <literal>ob_gzhandler</literal> or like + with <function>ob_start</function>, the order of output handler + is important for proper output. For example, user must register + <literal>ob_gzhandler</literal> before session start. + </simpara> + <note> + <simpara> + Use of <literal>zlib.output_compression</literal> is recommended + rather than <literal>ob_gzhandler</literal> + </simpara> + </note> </refsect1> </refentry> @@ -408,12 +487,32 @@ <![CDATA[ <?php -# Initialize the session. -# If you are using session_name("something"), don't forget it now! +// Initialize the session. +// If you are using session_name("something"), don't forget it now! session_start(); -# Unset all of the session variables. +// Unset all of the session variables. session_unset(); -# Finally, destroy the session. +// Finally, destroy the session. +session_destroy(); + +?> +]]> + </programlisting> + </example> + </para> + <para> + <example> + <title>Destroying a session with $_SESSION</title> + <programlisting role="php"> +<![CDATA[ +<?php + +// Initialize the session. +// If you are using session_name("something"), don't forget it now! +session_start(); +// Unset all of the session variables. +unset($_SESSION); +// Finally, destroy the session. session_destroy(); ?> @@ -460,9 +559,9 @@ <![CDATA[ <?php -# set the session name to WebsiteID +// set the session name to WebsiteID -$previous_name = session_name ("WebsiteID"); +$previous_name = session_name("WebsiteID"); echo "The previous session name was $previous_name<p>"; ?> @@ -622,6 +721,11 @@ list of functions that return resources are available in the <link linkend="resource">resource types</link> appendix. </para> + <para> + If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is + used, assign variable to $_SESSION. i.e. $_SESSION['var'] = + 'ABC'; + </para> </note> <para> See also <function>session_is_registered</function> and @@ -654,6 +758,13 @@ This function returns &true; when the variable is successfully unregistered from the session. </para> + <note> + <para> + If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is + used, use <function>unset</function> to unregister a session + variable. + </para> + </note> <caution> <para> This function doesn't unset the corresponding global variable for @@ -684,6 +795,13 @@ The <function>session_unset</function> function free's all session variables currently registered. </para> + <note> + <para> + If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is + used, use <function>unset</function> to unregister session + variable. i.e. unset($_SESSION)); + </para> + </note> </refsect1> </refentry> @@ -707,6 +825,13 @@ is a variable with the name <parameter>name</parameter> registered in the current session. </para> + <note> + <para> + If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is + used, use <function>isset</function> to check a variable is + registered in $_SESSION. + </para> + </note> </refsect1> </refentry> @@ -913,7 +1038,7 @@ $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { - return(""); + return(""); // Must return ("") here. } }