mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-18 05:26:57 +08:00
253 lines
14 KiB
HTML
253 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||
<title>启动新会话或者重用现有会话</title>
|
||
</head>
|
||
<body class="docs"><div id="layout">
|
||
<div id="layout-content"><div id="function.session-start" class="refentry">
|
||
<div class="refnamediv">
|
||
<h1 class="refname">session_start</h1>
|
||
<p class="verinfo">(PHP 4, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">session_start</span> — <span class="dc-title">启动新会话或者重用现有会话</span></p>
|
||
|
||
</div>
|
||
|
||
<div class="refsect1 description" id="refsect1-function.session-start-description">
|
||
<h3 class="title">说明</h3>
|
||
<div class="methodsynopsis dc-description">
|
||
<span class="methodname"><strong>session_start</strong></span>
|
||
([ <span class="methodparam"><span class="type">array</span> <code class="parameter">$options</code><span class="initializer"> = array()</span></span>
|
||
] ) : <span class="type">bool</span></div>
|
||
|
||
<p class="para rdfs-comment">
|
||
<span class="function"><strong>session_start()</strong></span> 会创建新会话或者重用现有会话。
|
||
如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID,
|
||
则会重用现有会话。
|
||
</p>
|
||
<p class="para">
|
||
当会话自动开始或者通过 <span class="function"><strong>session_start()</strong></span> 手动开始的时候,
|
||
PHP 内部会调用会话管理器的 open 和 read 回调函数。
|
||
会话管理器可能是 PHP 默认的,
|
||
也可能是扩展提供的(SQLite 或者 Memcached 扩展),
|
||
也可能是通过 <span class="function"><a href="session_set_save_handler.html" class="function">session_set_save_handler()</a></span> 设定的用户自定义会话管理器。
|
||
通过 read 回调函数返回的现有会话数据(使用特殊的序列化格式存储),
|
||
PHP 会自动反序列化数据并且填充 $_SESSION 超级全局变量。
|
||
</p>
|
||
<p class="para">
|
||
要想使用命名会话,请在调用 <span class="function"><strong>session_start()</strong></span> 函数
|
||
之前调用 <span class="function"><a href="session_name.html" class="function">session_name()</a></span> 函数。
|
||
</p>
|
||
<p class="para">
|
||
如果启用了 <a href="session.configuration.html#ini.session.use-trans-sid" class="link">session.use_trans_sid</a> 选项,
|
||
<span class="function"><strong>session_start()</strong></span> 函数会注册一个内部输出管理器,
|
||
该输出管理器完成 URL 重写的工作。
|
||
</p>
|
||
<p class="para">
|
||
如果用户联合使用 <span class="function"><a href="ob_start.html" class="function">ob_start()</a></span>
|
||
和 <em>ob_gzhandler</em> 函数,
|
||
那么函数的调用顺序会影响输出结果。
|
||
例如,必须在开始会话之前调用 <em>ob_gzhandler</em> 函数完成注册。
|
||
</p>
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 parameters" id="refsect1-function.session-start-parameters">
|
||
<h3 class="title">参数</h3>
|
||
<dl>
|
||
|
||
|
||
<dt>
|
||
<code class="parameter">options</code></dt>
|
||
|
||
<dd>
|
||
|
||
<p class="para">
|
||
此参数是一个关联数组,如果提供,那么会用其中的项目覆盖 <a href="session.configuration.html" class="link">会话配置指示</a> 中的配置项。此数组中的键无需包含 <em>session.</em> 前缀。
|
||
</p>
|
||
<p class="para">
|
||
除了常规的会话配置指示项,
|
||
还可以在此数组中包含 <em>read_and_close</em>
|
||
选项。如果将此选项的值设置为 <strong><code>TRUE</code></strong>,
|
||
那么会话文件会在读取完毕之后马上关闭,
|
||
因此,可以在会话数据没有变动的时候,避免不必要的文件锁。
|
||
</p>
|
||
</dd>
|
||
|
||
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 returnvalues" id="refsect1-function.session-start-returnvalues">
|
||
<h3 class="title">返回值</h3>
|
||
<p class="para">
|
||
成功开始会话返回 <strong><code>TRUE</code></strong> ,反之返回 <strong><code>FALSE</code></strong>
|
||
</p>
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 changelog" id="refsect1-function.session-start-changelog">
|
||
<h3 class="title">更新日志</h3>
|
||
<p class="para">
|
||
<table class="doctable informaltable">
|
||
|
||
<thead>
|
||
<tr>
|
||
<th>版本</th>
|
||
<th>说明</th>
|
||
</tr>
|
||
|
||
</thead>
|
||
|
||
<tbody class="tbody">
|
||
<tr>
|
||
<td>7.1.0</td>
|
||
<td>
|
||
当 <span class="function"><strong>session_start()</strong></span> 执行失败,
|
||
无法开始一个会话的时候,会返回 <strong><code>FALSE</code></strong>,
|
||
并且不会初始化超级变量 <var class="varname"><var class="varname"><a href="reserved.variables.session.html" class="classname">$_SESSION</a></var></var>。
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>7.0.0</td>
|
||
<td>
|
||
新加 <code class="parameter">options</code> 参数。
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>5.3.0</td>
|
||
<td>
|
||
如果函数调用失败返回 <strong><code>FALSE</code></strong>,
|
||
之前版本返回了 <strong><code>TRUE</code></strong>。
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>4.3.3</td>
|
||
<td>
|
||
在 PHP 4.3.3 中,
|
||
会话开始之后调用 <span class="function"><strong>session_start()</strong></span> 函数
|
||
会引发 <strong><code>E_NOTICE</code></strong> 级别的错误,
|
||
并且第二次请求开始会话的调用会被忽略。
|
||
</td>
|
||
</tr>
|
||
|
||
</tbody>
|
||
|
||
</table>
|
||
|
||
</p>
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 examples" id="refsect1-function.session-start-examples">
|
||
<h3 class="title">范例</h3>
|
||
<div class="refsect2 unknown-examplet" id="refsect2-function.session-start-unknown-examplet">
|
||
<h4 class="title">基本的会话示例</h4>
|
||
<p class="para">
|
||
<div class="example" id="example-5840">
|
||
<p><strong>Example #1 <var class="filename">page1.php</var></strong></p>
|
||
<div class="example-contents">
|
||
<div class="phpcode"><pre><span style="color: #000000">
|
||
<span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">// page1.php<br /><br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br /><br />echo </span><span style="color: #DD0000">'Welcome to page #1'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'favcolor'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'green'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'animal'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'cat'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'time'</span><span style="color: #007700">] = </span><span style="color: #0000BB">time</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// 如果使用 cookie 方式传送会话 ID<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'<br /><a href="page2.php">page 2</a>'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// 如果不是使用 cookie 方式传送会话 ID,则使用 URL 改写的方式传送会话 ID<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'<br /><a href="page2.php?' </span><span style="color: #007700">. </span><span style="color: #0000BB">SID </span><span style="color: #007700">. </span><span style="color: #DD0000">'">page 2</a>'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?></span>
|
||
</span>
|
||
</pre></div>
|
||
</div>
|
||
|
||
</div>
|
||
</p>
|
||
<p class="para">
|
||
请求 <var class="filename">page1.php</var> 页面之后,
|
||
第二个页面 <var class="filename">page2.php</var>
|
||
会包含会话数据。
|
||
请查阅 <a href="ref.session.html" class="link">会话参考</a>
|
||
获取更多关于 <a href="session.idpassing.html" class="link">会话 ID 传送</a>的信息,
|
||
在该参考页面中有关于常量 <strong><code>SID</code></strong> 的详细说明。
|
||
</p>
|
||
<p class="para">
|
||
<div class="example" id="example-5841">
|
||
<p><strong>Example #2 <var class="filename">page2.php</var></strong></p>
|
||
<div class="example-contents">
|
||
<div class="phpcode"><pre><span style="color: #000000">
|
||
<span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">// page2.php<br /><br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br /><br />echo </span><span style="color: #DD0000">'Welcome to page #2<br />'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'favcolor'</span><span style="color: #007700">]; </span><span style="color: #FF8000">// green<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'animal'</span><span style="color: #007700">]; </span><span style="color: #FF8000">// cat<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y m d H:i:s'</span><span style="color: #007700">, </span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">'time'</span><span style="color: #007700">]);<br /><br /></span><span style="color: #FF8000">// 类似 page1.php 中的代码,你可能需要在这里处理使用 SID 的场景<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'<br /><a href="page1.php">page 1</a>'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?></span>
|
||
</span>
|
||
</pre></div>
|
||
</div>
|
||
|
||
</div>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="refsect2 unknown-unknown-exampleu" id="refsect2-function.session-start-unknown-unknown-exampleu">
|
||
<h4 class="title">调用 <span class="function"><strong>session_start()</strong></span> 的时候指定选项</h4>
|
||
|
||
<div class="example" id="example-5842">
|
||
<p><strong>Example #3 覆盖 Cookie 超时时间设定</strong></p>
|
||
<div class="example-contents">
|
||
<div class="phpcode"><pre><span style="color: #000000">
|
||
<span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">// 设置 cookie 的有效时间为 1 天<br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">([<br /> </span><span style="color: #DD0000">'cookie_lifetime' </span><span style="color: #007700">=> </span><span style="color: #0000BB">86400</span><span style="color: #007700">,<br />]);<br /></span><span style="color: #0000BB">?></span>
|
||
</span>
|
||
</pre></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="example" id="example-5843">
|
||
<p><strong>Example #4 读取会话之后立即关闭会话存储文件</strong></p>
|
||
<div class="example-contents">
|
||
<div class="phpcode"><pre><span style="color: #000000">
|
||
<span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">// 如果确定不修改会话中的数据,<br />// 我们可以在会话文件读取完毕之后立即关闭它<br />// 来避免由于给会话文件加锁导致其他页面阻塞<br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">([<br /> </span><span style="color: #DD0000">'cookie_lifetime' </span><span style="color: #007700">=> </span><span style="color: #0000BB">86400</span><span style="color: #007700">,<br /> </span><span style="color: #DD0000">'read_and_close' </span><span style="color: #007700">=> </span><span style="color: #0000BB">true</span><span style="color: #007700">,<br />]);</span>
|
||
</span>
|
||
</pre></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 notes" id="refsect1-function.session-start-notes">
|
||
<h3 class="title">注释</h3>
|
||
<blockquote class="note"><p><strong class="note">Note</strong>:
|
||
<p class="para">
|
||
要使用基于 cookie 的会话,
|
||
必须在输出开始之前调用 <span class="function"><strong>session_start()</strong></span> 函数。
|
||
</p>
|
||
</p></blockquote>
|
||
<blockquote class="note"><p><strong class="note">Note</strong>:
|
||
<p class="para">
|
||
建议使用 <a href="zlib.configuration.html#ini.zlib.output-compression" class="link">zlib.output_compression</a>
|
||
来替代 <span class="function"><a href="ob_gzhandler.html" class="function">ob_gzhandler()</a></span>。
|
||
</p>
|
||
</p></blockquote>
|
||
<blockquote class="note"><p><strong class="note">Note</strong>:
|
||
<p class="para">
|
||
根据配置不同,本函数会发送几个 HTTP 响应头。
|
||
参考 <span class="function"><a href="session_cache_limiter.html" class="function">session_cache_limiter()</a></span>
|
||
来自定义 HTTP 响应头。
|
||
</p>
|
||
</p></blockquote>
|
||
</div>
|
||
|
||
|
||
<div class="refsect1 seealso" id="refsect1-function.session-start-seealso">
|
||
<h3 class="title">参见</h3>
|
||
<p class="para">
|
||
<ul class="simplelist">
|
||
<li class="member"><var class="varname"><var class="varname"><a href="reserved.variables.session.html" class="classname">$_SESSION</a></var></var></li>
|
||
<li class="member">
|
||
<a href="session.configuration.html#ini.session.auto-start" class="link">session.auto_start</a>
|
||
配置指示
|
||
</li>
|
||
<li class="member"><span class="function"><a href="session_id.html" class="function" rel="rdfs-seeAlso">session_id()</a> - 获取/设置当前会话 ID</span></li>
|
||
</ul>
|
||
</p>
|
||
</div>
|
||
|
||
|
||
</div></div></div></body></html> |