PHP 8.4.1 Released!

session_id

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

session_id获取/设置当前会话 ID

说明

session_id(?string $id = null): string|false

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。

参见

添加备注

用户贡献的备注 1 note

up
42
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 '-,'
To Top