在PHP开发中,SESSION会话用来在多次请求之间保存用户数据,比如登录信息、购物车内容。服务器给每个浏览器分配一个唯一会话ID,相关数据存放在服务端,浏览器只保存这个ID。下面介绍PHP里如何开启和使用SESSION,以及基本的会话管理方法。

一、开启SESSION会话
使用SESSION前必须调用 session_start() 函数,而且要在输出任何内容之前调用,否则会报错。该函数会检查请求里是否带会话ID,没有就新建一个,并发送Cookie给浏览器。
<?php
// 开启会话,必须放在最前面
session_start();
// 如果会话里没有访问次数,初始化为1
if (!isset($_SESSION['visit'])) {
$_SESSION['visit'] = 1;
} else {
$_SESSION['visit']++;
}
echo '您是第 ' . $_SESSION['visit'] . ' 次访问本页';
?>
二、读写SESSION数据
SESSION数据都放在超全局数组 $_SESSION 中,可以像普通数组一样赋值和读取。注意写入的键名不要和后续代码冲突。
写入和读取示例
<?php session_start(); // 写入用户登录名 $_SESSION['username'] = 'zhangsan'; // 读取用户名 $name = $_SESSION['username']; echo '当前登录用户:' . $name; ?>
三、销毁SESSION会话
用户退出登录时要清理会话,避免信息残留。仅用 unset($_SESSION) 不够,还要删除服务端文件和Cookie。
安全退出写法
<?php
session_start();
// 清空会话数组
$_SESSION = array();
// 删除会话Cookie
if (ini_get('session.use_cookies')) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params['path'], $params['domain'],
$params['secure'], $params['httponly']
);
}
// 销毁服务端会话
session_destroy();
echo '您已安全退出';
?>
四、常见配置与注意事项
- php.ini里
session.auto_start设为1可自动开启,但一般不推荐。 - 会话默认存放在服务器临时目录,可用
session_save_path()修改。 - 浏览器禁用Cookie时,可启用
session.use_trans_sid通过URL传递会话ID。 - 敏感数据不要明文存SESSION,服务端文件要有访问控制。
五、SESSION与Cookie区别
| 对比项 | SESSION | Cookie |
|---|---|---|
| 存储位置 | 服务器 | 浏览器 |
| 安全性 | 较高 | 较低,可被篡改 |
| 大小限制 | 基本无限制 | 约4KB |
掌握PHP中SESSION的开启、读写和销毁,就能实现稳定的用户状态管理。实际项目中结合数据库验证,可构建安全的会员系统。