session_id
(PHP 4, PHP 5, PHP 7, PHP 8)
session_id — 获取/设置当前会话 ID
说明
session_id() 可以用来获取/设置 当前会话 ID。
为了能够将会话 ID 很方便的附加到 URL 之后,
你可以使用常量 SID
获取以字符串格式表达的会话名称和 ID。
请参考 会话处理。
参数
id
-
如果指定了
id
且不为null
, 则使用指定值作为会话 ID。 必须在调用 session_start() 函数之前调用 session_id() 函数。 不同的会话处理程序对于会话 ID 中可以使用的字符有不同的限制。 例如文件会话处理程序仅允许会话 ID 中使用以下字符:[a-zA-Z0-9,-]
注意: 如果使用 cookie 方式传送会话 ID,并且指定了
id
参数, 在调用 session_start() 之后都会向客户端发送新的 cookie, 无论当前的会话 ID 和新指定的会话 ID 是否相同。
返回值
session_id() 返回当前会话ID。
如果当前没有会话,则返回空字符串(""
)。失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
8.0.0 |
id 现在可以为 null。
|
参见
- session_regenerate_id() - 使用新生成的会话 ID 更新现有会话 ID
- session_start() - 启动新会话或者重用现有会话
- session_set_save_handler() - 设置用户自定义会话存储函数
- session.save_handler
+添加备注
用户贡献的备注 1 note
Riikka K ¶
9 years ago
It may be good to note that PHP does not allow arbitrary session ids. The session id validation in PHP source is defined in ext/session/session.c in the function php_session_valid_key:
https://github.com/php/php-src/blob/master/ext/session/session.c
To put it short, a valid session id may consists of digits, letters A to Z (both upper and lower case), comma and dash. Described as a character class, it would be [-,a-zA-Z0-9]. A valid session id may have the length between 1 and 128 characters. To validate session ids, the easiest way to do it use a function like:
<?php
function session_valid_id($session_id)
{
return preg_match('/^[-,a-zA-Z0-9]{1,128}$/', $session_id) > 0;
}
?>
session_id() itself will happily accept invalid session ids, but if you try to start a session using an invalid id, you will get the following error:
Warning: session_start(): The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,'