PHP session_start 会话函数



  • 定义和用法

    session_start - 启动新会话或者重用现有会话
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
    7.1.0 当 session_start() 执行失败, 无法开始一个会话的时候,会返回 FALSE, 并且不会初始化超级变量 $_SESSION。
    7.0.0 新加 options 参数。
    5.3.0 如果函数调用失败返回 FALSE, 之前版本返回了 TRUE。
  • 语法

    session_start ( [ array $options = array() ] )
    
    session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。当会话自动开始或者通过 session_start() 手动开始的时候, PHP 内部会调用会话管理器的 open 和 read 回调函数。 会话管理器可能是 PHP 默认的, 也可能是扩展提供的(SQLite 或者 Memcached 扩展), 也可能是通过 session_set_save_handler() 设定的用户自定义会话管理器。 通过 read 回调函数返回的现有会话数据(使用特殊的序列化格式存储), PHP 会自动反序列化数据并且填充 $_SESSION 超级全局变量。 要想使用命名会话,请在调用 session_start() 函数 之前调用 session_name() 函数。 如果启用了 session.use_trans_sid 选项, session_start() 函数会注册一个内部输出管理器, 该输出管理器完成 URL 重写的工作。如果用户联合使用 ob_start()ob_gzhandler 函数, 那么函数的调用顺序会影响输出结果。 例如,必须在开始会话之前调用 ob_gzhandler 函数完成注册。
  • 参数

    参数 必需的 描述
    options 此参数是一个关联数组,如果提供,那么会用其中的项目覆盖 会话配置指示 中的配置项。此数组中的键无需包含 session. 前缀。 除了常规的会话配置指示项, 还可以在此数组中包含 read_and_close 选项。如果将此选项的值设置为 TRUE, 那么会话文件会在读取完毕之后马上关闭, 因此,可以在会话数据没有变动的时候,避免不必要的文件锁。
  • 返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE。
  • 示例

    // page1.php
    
    session_start();
    
    echo 'Welcome to page #1';
    
    $_SESSION['favcolor'] = 'green';
    $_SESSION['animal']   = 'cat';
    $_SESSION['time']     = time();
    
    // 如果使用 cookie 方式传送会话 ID
    echo '<br /><a href="page2.php">page 2</a>';
    
    // 如果不是使用 cookie 方式传送会话 ID,则使用 URL 改写的方式传送会话 ID
    echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
    
    提示:要使用基于 cookie 的会话, 必须在输出开始之前调用 session_start() 函数。
    提示:建议使用 zlib.output_compression 来替代 ob_gzhandler()。
    提示:根据配置不同,本函数会发送几个 HTTP 响应头。 参考 session_cache_limiter() 来自定义 HTTP 响应头。
  • 相关函数

    session_id() - 获取/设置当前会话 ID