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 更新现有会话 ID
    session_start() - 启动新会话或者重用现有会话
    SessionHandler::create_sid() - 返回一个新的会话ID