«

PHP 会话管理详解

时间:2026-10-6 07:41     作者:emer     分类: 无


PHP 会话管理详解

Session 和 Cookie 是 PHP 做用户登录、状态保持的基础,搞懂原理才不会出问题。

1. Cookie 和 Session 的区别

Cookie:存在客户端浏览器里,每次请求自动带在请求头里。

Session:存在服务器端,客户端只存一个 session_id。

2. Cookie 基本用法

// 设置 Cookie(7天过期)
setcookie('user_id', '123', time() + 3600 * 24 * 7);

// 读取 Cookie
echo $_COOKIE['user_id'];

// 删除 Cookie(过期时间设为过去)
setcookie('user_id', '', time() - 3600);

3. Session 基本用法

// 开启 Session(必须在最前面)
session_start();

// 设置 Session
$_SESSION['user_id'] = 123;
$_SESSION['user_name'] = '张三';

// 读取 Session
echo $_SESSION['user_name'];

// 删除单个 Session
unset($_SESSION['user_id']);

// 销毁所有 Session
session_destroy();

4. Session 工作原理

  1. 用户第一次访问,PHP 生成唯一 session_id
  2. 把 session_id 通过 Cookie 发给浏览器
  3. 浏览器下次访问自动带上这个 Cookie
  4. 服务器根据 session_id 找到对应 Session 数据

5. Session 配置

php.ini 里常用配置:

; Session 保存路径
session.save_path = "/tmp"

; Session 过期时间(分钟)
session.gc_maxlifetime = 1440

; Cookie 有效期(0 表示浏览器关闭就过期)
session.cookie_lifetime = 0

6. 常见问题

1)Session 丢失:

2)多台服务器 Session 共享:

// Session 存 Redis
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://127.0.0.1:6379');

7. 安全建议

// 登录成功后重新生成 ID
session_regenerate_id(true);

总结

PHP 会话管理核心:

搞懂这些,用户登录功能就不会出问题了。

标签: PHP Session Cookie 登录 会话