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.
   }
 
 }


Reply via email to