philip Wed Jun 11 00:03:58 2003 EDT Modified files: /phpdoc/en/reference/session/functions session-start.xml Log: Added an example that shows sessions must be started on every page, not just the first. Note about E_NOTICE since 4.3.3 if session started when session already exists. Link to various session resources including see also's, moved session_name note more towards the bottom, and one grammar fix. Index: phpdoc/en/reference/session/functions/session-start.xml diff -u phpdoc/en/reference/session/functions/session-start.xml:1.4 phpdoc/en/reference/session/functions/session-start.xml:1.5 --- phpdoc/en/reference/session/functions/session-start.xml:1.4 Wed Jan 22 13:34:59 2003 +++ phpdoc/en/reference/session/functions/session-start.xml Wed Jun 11 00:03:58 2003 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.4 $ --> +<!-- $Revision: 1.5 $ --> <!-- splitted from ./en/functions/session.xml, last change in rev 1.2 --> <refentry id="function.session-start"> <refnamediv> @@ -18,20 +18,77 @@ passed via a request, such as GET, POST, or a cookie. </simpara> <simpara> - If you want to use a named session, you must call - <function>session_name</function> before calling - <function>session_start</function>. - </simpara> - <simpara> This function always returns &true;. </simpara> <note> <para> If you are using cookie-based sessions, you must call - <function>session_start</function> before anything is output to the + <function>session_start</function> before anything is outputted to the browser. </para> </note> + <para> + <example> + <title>A session example: <filename>page1.php</filename></title> + <programlisting role="php"> +<![CDATA[ +<?php +// page1.php + +session_start(); + +echo 'Welcome to page #1'; + +$_SESSION['favcolor'] = 'green'; +$_SESSION['animal'] = 'cat'; +$_SESSION['time'] = time(); + +// Works if session cookie was accepted +echo '<br /><a href="page2.php">page 2</a>'; + +// Or maybe pass along the session id, if needed +echo '<br /><a href="page2.php?' . SID . '">page 2</a>'; +?> +]]> + </programlisting> + </example> + </para> + <para> + After viewing <filename>page1.php</filename>, the second page + <filename>page2.php</filename> will magically contain the session + data. Read the <link linkend="ref.session">session reference</link> + for information on <link linkend="session.idpassing">propagating + session ids</link> as it, for example, explains what the constant + <constant>SID</constant> is all about. + </para> + <para> + <example> + <title>A session example: <filename>page2.php</filename></title> + <programlisting role="php"> +<![CDATA[ +<?php +// page2.php + +session_start(); + +echo 'Welcome to page #2<br />'; + +echo $_SESSION['favcolor']; // green +echo $_SESSION['animal']; // cat +echo date('Y m d H:i:s', $_SESSION['time']); + +// You may want to use SID here, like we did in page1.php +echo '<br /><a href="page1.php">page 1</a>'; +?> +]]> + </programlisting> + </example> + </para> + <simpara> + If you want to use a named session, you must call + <function>session_name</function> before calling + <function>session_start</function>. + </simpara> <simpara> <function>session_start</function> will register internal output handler for URL rewriting when <literal>trans-sid</literal> is @@ -46,6 +103,20 @@ is recommended rather than <function>ob_gzhandler</function> </simpara> </note> + <note> + <para> + As of PHP 4.3.3, calling <function>session_start</function> while the + session has already been started will result in an error of level + <constant>E_NOTICE</constant>. Also, the second session start will + simply be ignored. + </para> + </note> + <para> + See also + <link linkend="reserved.variables.session">$_SESSION</link>, + <link linkend="ini.session.auto-start">session.auto_start</link>, and + <function>session_id</function>. + </para> </refsect1> </refentry>
-- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php