1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.5 $ -->
<!-- splitted from ./en/functions/session.xml, last change in rev 1.2 -->
<refentry id="function.session-start">
<refnamediv>
<refname>session_start</refname>
<refpurpose>Initialize session data</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>bool</type><methodname>session_start</methodname>
<void/>
</methodsynopsis>
<simpara>
<function>session_start</function> creates a session or resumes
the current one based on the current session id that's being
passed via a request, such as GET, POST, or a cookie.
</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 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
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 <link linkend="ini.zlib.output-compression">zlib.output_compression</link>
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>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|