session_start 启动新会话或者重用现有会话
发表日期:2021-07-01 08:56:52 | 来源: | | 浏览(1064) 分类:Session 函数
session_start
(PHP 4, PHP 5, PHP 7, PHP 8)
session_start — 启动新会话或者重用现有会话
说明
$options
= array()): boolsession_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
更新日志
版本 | 说明 |
---|---|
7.1.0 |
当 session_start() 执行失败,
无法开始一个会话的时候,会返回 false ,
并且不会初始化超级变量 $_SESSION。
|
7.0.0 |
新加 options 参数。
|
5.3.0 |
如果函数调用失败返回 false ,
之前版本返回了 true 。
|
范例
基本的会话示例
示例 #1 page1.php
<?php // page1.phpsession_start(); echo 'Welcome to page #1'; $_SESSION['favcolor'] = 'green'; $_SESSION['animal'] = 'cat'; $_SESSION['time'] = time(); // 如果使用 cookie 方式传送会话 IDecho '<br /><a href="page2.php">page 2</a>'; // 如果不是使用 cookie 方式传送会话 ID,则使用 URL 改写的方式传送会话 IDecho '<br /><a href="page2.php?' . SID . '">page 2</a>'; ?>
请求 page1.php 页面之后,
第二个页面 page2.php
会包含会话数据。
请查阅 会话参考
获取更多关于 会话 ID 传送的信息,
在该参考页面中有关于常量 SID
的详细说明。
示例 #2 page2.php
<?php // page2.phpsession_start(); echo 'Welcome to page #2<br />'; echo $_SESSION['favcolor']; // greenecho $_SESSION['animal']; // catecho date('Y m d H:i:s', $_SESSION['time']); // 类似 page1.php 中的代码,你可能需要在这里处理使用 SID 的场景echo '<br /><a href="page1.php">page 1</a>'; ?>
调用 session_start() 的时候指定选项
示例 #3 覆盖 Cookie 超时时间设定
<?php // 设置 cookie 的有效时间为 1 天session_start([ 'cookie_lifetime' => 86400,]); ?>
示例 #4 读取会话之后立即关闭会话存储文件
<?php // 如果确定不修改会话中的数据,// 我们可以在会话文件读取完毕之后立即关闭它// 来避免由于给会话文件加锁导致其他页面阻塞session_start([ 'cookie_lifetime' => 86400, 'read_and_close' => true,]);
注释
注意:
要使用基于 cookie 的会话, 必须在输出开始之前调用 session_start() 函数。
注意:
建议使用 zlib.output_compression 来替代 ob_gzhandler()。
注意:
根据配置不同,本函数会发送几个 HTTP 响应头。 参考 session_cache_limiter() 来自定义 HTTP 响应头。
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- session_abort Discard session array changes and finish session(0)
- session_cache_expire 返回当前缓存的到期时间(0)
- session_cache_limiter 读取/设置缓存限制器(0)
- session_commit session_write_close() 的别名(0)
- session_create_id Create new session id(0)
- session_decode 解码会话数据(0)
- session_destroy 销毁一个会话中的全部数据(0)
- session_encode 将当前会话数据编码为一个字符串(0)
- session_gc Perform session data garbage collection(0)
- session_get_cookie_params 获取会话 cookie 参数(0)
- session_id 获取/设置当前会话 ID(0)
- session_module_name 获取/设置会话模块名称(0)
- session_name 读取/设置会话名称(0)
- session_regenerate_id 使用新生成的会话 ID 更新现有会话 ID(0)
- session_register_shutdown 关闭会话(0)
- session_reset Re-initialize session array with original values(0)
- session_save_path 读取/设置当前会话的保存路径(0)
- session_set_cookie_params 设置会话 cookie 参数(0)
- session_set_save_handler 设置用户自定义会话存储函数(0)
- session_start 启动新会话或者重用现有会话(0)
- session_status 返回当前会话状态(0)
- session_unset 释放所有的会话变量(0)
- session_write_close Write session data and end session(0)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)