philip          Tue Jan 21 16:26:43 2003 EDT

  Modified files:              
    /phpdoc/en/reference/http/functions setcookie.xml 
  Log:
  Moved and greatly expanded parameter information into a table.  And mention 
  register_globals and $_REQUEST as well as print_r($_COOKIE) for debugging.
  
  
Index: phpdoc/en/reference/http/functions/setcookie.xml
diff -u phpdoc/en/reference/http/functions/setcookie.xml:1.14 
phpdoc/en/reference/http/functions/setcookie.xml:1.15
--- phpdoc/en/reference/http/functions/setcookie.xml:1.14       Mon Jan 20 13:46:35 
2003
+++ phpdoc/en/reference/http/functions/setcookie.xml    Tue Jan 21 16:26:43 2003
@@ -1,5 +1,6 @@
+
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.14 $ -->
+<!-- $Revision: 1.15 $ -->
 <!-- splitted from ./en/functions/http.xml, last change in rev 1.2 -->
   <refentry id="function.setcookie">
    <refnamediv>
@@ -33,17 +34,105 @@
      All the arguments except the <parameter>name</parameter> argument
      are optional.  If only the name argument is present, the cookie
      by that name will be deleted from the remote client.  You may
-     also replace any argument with an empty string
+     also replace an argument with an empty string
      (<emphasis>&quot;&quot;</emphasis>) in order to skip that
-     argument.  The <parameter>expire</parameter> and
-     <parameter>secure</parameter> arguments are integers and cannot
-     be skipped with an empty string.  Use a zero
-     (<emphasis>0</emphasis>) instead.  The
-     <parameter>expire</parameter> argument is a regular Unix time
-     integer as returned by the <function>time</function> or
-     <function>mktime</function> functions.  The
-     <parameter>secure</parameter> indicates that the cookie should
-     only be transmitted over a secure HTTPS connection.
+     argument.  Because the <parameter>expire</parameter> and
+     <parameter>secure</parameter> arguments are integers, they cannot
+     be skipped with an empty string, use a zero (<emphasis>0</emphasis>) 
+     instead.  The following table explains each parameter of 
+     <function>setcookie</function>:
+    </para>
+    <para>
+     <table>
+      <title><function>setcookie</function> parameters explained</title>
+      <tgroup cols="3">
+       <thead>
+        <row>
+         <entry>Parameter</entry>
+         <entry>Description</entry>
+         <entry>Examples</entry>
+        </row>
+       </thead>
+       <tbody>
+        <row>
+         <entry><parameter>name</parameter></entry>
+         <entry>
+          The name of the cookie.
+         </entry>
+         <entry>
+          'cookiename' is called as <varname>$_COOKIE['cookiename']</varname>
+         </entry>
+        </row>
+        <row>
+         <entry><parameter>value</parameter></entry>
+         <entry>
+          The value of the cookie.  This value is stored on the clients
+          computer; do not store sensitive information.
+         </entry>
+         <entry>
+          Assuming the <parameter>name</parameter> is 'cookiename', this
+          value is retrieved through <varname>$_COOKIE['cookiename']</varname>
+         </entry>
+        </row>
+        <row>
+         <entry><parameter>expire</parameter></entry>
+         <entry>
+          The time the cookie expires.  This is a unix timestamp so is
+          in number of seconds since the epoch.  In otherwords, you'll
+          most likely set this with the <function>time</function> function
+          plus the number of seconds before you want it to expire.  Or
+          you might use <function>mktime</function>.
+         </entry>
+         <entry>
+          <literal>time()+60*60*24*30</literal> will set the cookie to
+          expire in 30 days.  If not set, the cookie will expire at
+         the end of the session (when the browser closes).
+         </entry>
+        </row>
+        <row>
+         <entry><parameter>path</parameter></entry>
+         <entry>
+          The path on the server in which the cookie will be available on.
+         </entry>
+         <entry>
+          If set to <literal>'/'</literal>, the cookie will be available
+          within the entire <parameter>domain</parameter>.  If set to
+          <literal>'/foo/'</literal>, the cookie will only be available
+          within the <literal>/foo/</literal> directory and all
+          sub-directories such as <literal>/foo/bar/</literal> of
+          <parameter>domain</parameter>.  The default value is the
+         current directory that the cookie is being set in.
+        </entry>
+        </row>
+        <row>
+         <entry><parameter>domain</parameter></entry>
+         <entry>
+         The domain that the cookie is available.
+         </entry>
+         <entry>
+         To make the cookie available on all subdomains of example.com
+         then you'd set it to <literal>'.example.com'</literal>.  The
+         <literal>.</literal> is not required but makes it compatable 
+         with more browsers.  Setting it to <literal>www.example.com</literal>
+         will make the cookie only available in the <literal>www</literal>
+         subdomain.
+        </entry>
+        </row>
+        <row>
+         <entry><parameter>secure</parameter></entry>
+         <entry>
+          Indicates that the cookie should only be transmitted over a 
+          secure HTTPS connection.  When set to <literal>1</literal>, the
+          cookie will only be set if a secure connection exists.  The default
+          is <literal>0</literal>.
+         </entry>
+         <entry>
+          <literal>0</literal> or <literal>1</literal>
+         </entry>
+        </row>
+       </tbody>
+      </tgroup>
+     </table>
     </para>
     <para>
      Once the cookies have been set, they can be accessed on the next page load
@@ -52,8 +141,18 @@
      <link linkend="language.variables.superglobals">autoglobals</link> 
      such as <varname>$_COOKIE</varname> became available in PHP
      <ulink url="&url.php.release4.1.0;">4.1.0</ulink>.
-     <varname>$HTTP_COOKIE_VARS</varname> has existed since PHP 3.
+     <varname>$HTTP_COOKIE_VARS</varname> has existed since PHP 3.  Cookie
+     values also exist in <link linkend="reserved.variables.request">
+     $_REQUEST</link>.
     </para>
+    <note>
+     <para>
+      If the PHP directive <link 
+linkend="ini.register-globals">register_globals</link>
+      is set to <literal>on</literal> then cookie values will also be made into
+      variables.  In our examples below, <varname>$TextCookie</varname> will
+      exist.  It's recommended to use <varname>$_COOKIE</varname>.
+     </para>
+    </note>
     <para>
      Common Pitfalls:
      <itemizedlist>
@@ -63,7 +162,8 @@
         the cookie should be visible for.  To test if a cookie was successfully 
         set, check for the cookie on a next loading page before the cookie 
         expires.  Expire time is set via the <parameter>expire</parameter> 
-        parameter.
+        parameter.  A nice way to debug the existence of cookies is by
+        simply calling <literal>print_r($_COOKIE);</literal>.
        </simpara>
       </listitem>
       <listitem>



-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to