1
0
mirror of https://github.com/php/doc-zh.git synced 2026-04-28 02:33:12 +02:00
Files
2024-10-09 12:13:36 +08:00

166 lines
5.1 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d7a77b5f850d5077f75d0c8c0d22cd60f099965d Maintainer: yuanyuqiang Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<refentry xml:id="function.session-name" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_name</refname>
<refpurpose>读取/设置会话名称</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>session_name</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>name</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_name</function> 函数返回当前会话名称。
如果指定 <parameter>name</parameter> 参数,
<function>session_name</function> 函数会更新会话名称,
并返回 <emphasis>原来的</emphasis> 会话名称。
</para>
<para>
如果使用 <parameter>name</parameter> 指定了新字符串作为会话 cookie 的名字,
<function>session_name</function> 函数会修改 HTTP 响应中的 cookie
(如果启用了 <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link>,还会输出会话 cookie 的内容)。
一旦在 HTTP 响应中发送了 cookie 的内容之后,
调用 <function>session_name</function> 函数会产生 <constant>E_WARNING</constant>
所以,一定要在调用 <function>session_start</function> 函数之前
调用此函数。
</para>
<para>
请求开始的时候,会话名称会被重置并且存储到
<literal>session.name</literal> 配置项。
因此,要想设置会话名称,那么对于每个请求,都需要在
调用 <function>session_start</function> 函数
之前调用 <function>session_name</function> 函数。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>name</parameter></term>
<listitem>
<para>
用在 cookie 或者 URL 中的会话名称,
例如:<literal>PHPSESSID</literal>
只能使用字母和数字作为会话名称,建议尽可能的短一些,
并且是望文知意的名字(对于启用了 cookie 警告的用户来说,方便其判断是否要允许此 cookie)。
如果指定了 <parameter>name</parameter> 且不为 &null;
那么当前会话也会使用指定值作为名称。
</para>
<para>
<warning>
<para>
会话名称至少需要一个字母,不能全部都使用数字,
否则,每次都会生成一个新的会话 ID。
</para>
</warning>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
返回当前会话名称。如果指定 <parameter>name</parameter> 参数,那么此函数会更新会话名称,并且
返回 <emphasis>原来的</emphasis> 会话名称,&return.falseforfailure;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>name</parameter> 现在可以为 null。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
<function>session_name</function> 函数会检查会话状态,
之前的版本仅仅检查 cookie 状态。
所以,旧版本的 PHP 允许你在调用 <function>session_start</function>
函数之后再调用 <function>session_name</function> 函数,
新版本的 PHP 不再允许这样做了。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>session_name</function> 示例</title>
<programlisting role="php">
<![CDATA[
<?php
/* set the session name to WebsiteID */
$previous_name = session_name("WebsiteID");
echo "The previous session name was $previous_name<br />";
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member>
<link linkend="ini.session.name">session.name</link>
配置指示
</member>
</simplelist>
</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:"~/.phpdoc/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
-->