核心对象属性对照表
对象层级 | 属性名 | 类型 | 示例值 | 生命周期 |
|---|---|---|---|---|
$_SESSION | user_data | array | ['id'=>101] | 会话持续期 |
会话文件 | 存储路径 | string | /tmp/sess_a1b2 | 直到GC清理 |
Cookie | SEC_ID | string | a1b2c3d4e5 | 浏览器存活期 |
元信息 | session_status() | int | 2(PHP_SESSION_ACTIVE) | 请求周期 |
完整参数功能对照表
参数分类 | 关键参数 | 默认值 | 安全建议 | 数据类型 |
|---|---|---|---|---|
标识控制 | session.name | PHPSESSID | 自定义混淆 | string |
传输安全 | session.cookie_secure | Off | 生产环境启用 | bool |
存储配置 | session.save_handler | files | 可改为redis | string |
并发控制 | session.lazy_write | On | 高并发建议关闭 | bool |
规范化的PHP会话管理代码实现,包含完整注释和最佳实践
<?php
/**
* 会话管理演示脚本
* 功能:启动会话、存储数据、安全关闭
*/
// 严格类型声明
declare(strict_types=1);
// 检查会话状态避免重复启动
if (session_status() === PHP_SESSION_NONE) {
// 配置会话参数(生产环境推荐设置)
$sessionOptions = [
'name' => 'SECURE_SESS', // 自定义会话名称
'cookie_lifetime' => 86400, // 24小时有效期
'cookie_secure' => true, // 仅HTTPS传输
'cookie_httponly' => true, // 禁止JS访问
'cookie_samesite' => 'Lax', // CSRF防护
'use_strict_mode' => true // 严格会话ID验证
];
// 启动会话(@抑制可能的header已发送警告)
@session_start($sessionOptions);
}
// 会话数据操作(类型安全示例)
if (isset($_SESSION)) {
$_SESSION['user'] = [
'username' => 'admin', // 字符串类型
'last_login' => time(), // 整型时间戳
'privileges' => ['read', 'write'] // 数组类型
];
// 序列化后存储格式示例:
// user|a:3:{s:8:"username";s:5:"admin";s:10:"last_login";i:1723389776;s:10:"privileges";a:2:{i:0;s:4:"read";i:1;s:5:"write";}}
}
// 显式关闭会话(释放文件锁)
if (session_status() === PHP_SESSION_ACTIVE) {
session_write_close();
}