session_name

(PHP 4, PHP 5, PHP 7, PHP 8)

session_name读取/设置会话名称

说明

session_name(?string $name = null): string|false

session_name() 函数返回当前会话名称。 如果指定 name 参数, session_name() 函数会更新会话名称, 并返回 原来的 会话名称。

如果使用 name 指定了新字符串作为会话 cookie 的名字, session_name() 函数会修改 HTTP 响应中的 cookie (如果启用了 session.transid,还会输出会话 cookie 的内容)。 一旦在 HTTP 响应中发送了 cookie 的内容之后, 调用 session_name() 函数会产生错误。 所以,一定要在调用 session_start() 函数之前 调用此函数。

请求开始的时候,会话名称会被重置并且存储到 session.name 配置项。 因此,要想设置会话名称,那么对于每个请求,都需要在 调用 session_start() 函数 之前调用 session_name() 函数。

参数

name

用在 cookie 或者 URL 中的会话名称, 例如:PHPSESSID。 只能使用字母和数字作为会话名称,建议尽可能的短一些, 并且是望文知意的名字(对于启用了 cookie 警告的用户来说,方便其判断是否要允许此 cookie)。 如果指定了 name 且不为 null, 那么当前会话也会使用指定值作为名称。

警告

会话名称至少需要一个字母,不能全部都使用数字, 否则,每次都会生成一个新的会话 ID。

返回值

返回当前会话名称。如果指定 name 参数,那么此函数会更新会话名称,并且 返回 原来的 会话名称, 或者在失败时返回 false

更新日志

版本 说明
8.0.0 name 现在可以为 null。
7.2.0 session_name() 函数会检查会话状态, 之前的版本仅仅检查 cookie 状态。 所以,旧版本的 PHP 允许你在调用 session_start() 函数之后再调用 session_name() 函数, 新版本的 PHP 不再允许这样做了。

示例

示例 #1 session_name() 示例

<?php

/* set the session name to WebsiteID */

$previous_name = session_name("WebsiteID");

echo
"The previous session name was $previous_name<br />";
?>

参见