可能需要注意的是,PHP 不允許任意階段識別碼。 PHP 原始碼中的階段識別碼驗證定義在 ext/session/session.c 中的 php_session_valid_key 函式中。
https://github.com/php/php-src/blob/master/ext/session/session.c
簡而言之,有效的階段識別碼可以由數字、字母 A 到 Z(大寫和小寫)、逗號和破折號組成。以字元類別描述,它將是 [-,a-zA-Z0-9]。有效的階段識別碼長度可以在 1 到 128 個字元之間。要驗證階段識別碼,最簡單的方法是使用如下函式:
<?php
function session_valid_id($session_id)
{
return preg_match('/^[-,a-zA-Z0-9]{1,128}$/', $session_id) > 0;
}
?>
`session_id()` 函式本身會接受無效的 session id,但如果您嘗試使用無效的 id 啟動一個 session,您會收到以下錯誤訊息:
警告:session_start():Session id 過長或包含非法字元,有效字元為 a-z、A-Z、0-9 和 '-,'