PHP session_create_id 会话函数
-
定义和用法
session_create_id - 创建新的会话ID -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 -
语法
session_create_id ( [ string $prefix ] )
session_create_id() 用于为当前会话创建新的会话ID。 它返回无冲突会话ID。如果会话未激活,则省略冲突检查。会话ID是根据php.ini设置创建的。对于GC任务脚本,请使用与Web服务器相同的用户ID,这一点很重要。 否则,您可能会遇到权限问题,尤其是文件保存处理程序。 -
参数
参数 必需的 描述 prefix 否 如果指定了prefix,则新的会话ID带有前缀。 会话ID内不允许所有字符。 允许使用a-z A-Z 0-9范围内的字符 ,(逗号)和-(减号)。 -
返回值
session_create_id() 返回当前会话的新的无冲突会话ID。 如果在没有活动会话的情况下使用它,则将省略冲突检查。 -
示例
// My session start function support timestamp management function my_session_start() { session_start(); // Do not allow to use too old session ID if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) { session_destroy(); session_start(); } } // My session regenerate id function function my_session_regenerate_id() { // Call session_create_id() while session is active to // make sure collision free. if (session_status() != PHP_SESSION_ACTIVE) { session_start(); } // WARNING: Never use confidential strings for prefix! $newid = session_create_id('myprefix-'); // Set deleted timestamp. Session data must not be deleted immediately for reasons. $_SESSION['deleted_time'] = time(); // Finish session session_commit(); // Make sure to accept user defined session ID // NOTE: You must enable use_strict_mode for normal operations. ini_set('session.use_strict_mode', 0); // Set new custom session ID session_id($newid); // Start with custom session ID session_start(); } // Make sure use_strict_mode is enabled. // use_strict_mode is mandatory for security reasons. ini_set('session.use_strict_mode', 1); my_session_start(); // Session ID must be regenerated when // - User logged in // - User logged out // - Certain period has passed my_session_regenerate_id(); // Write useful codes
-
相关函数
session_regenerate_id() - 使用新生成的会话 ID 更新现有会话 IDsession_start() - 启动新会话或者重用现有会话SessionHandler::create_sid() - 返回一个新的会话ID