PHP中Session用于跨页保持用户状态,需先调用session_start()启动,通过$_SESSION存取数据,可配置生命周期、存储路径及ID传递方式,并支持销毁会话以保障安全。

如果您在PHP开发中需要在多个页面间保持用户状态,则必须使用Session机制来存储和访问临时数据。以下是PHP中Session的管理操作说明:
一、启动Session并存储数据
Session必须在任何输出发送到浏览器之前启动,通过session_start()函数初始化会话,并使用$_SESSION超全局数组保存键值对数据。
1、在PHP脚本最顶部(无空格、无HTML、无echo)调用session_start()函数。
2、向$_SESSION数组中添加元素,例如:$_SESSION['user_id'] = 123;
立即学习“PHP免费学习笔记(深入)”;
3、该数据将被序列化并保存在服务器端,默认以文件形式存于系统临时目录中。
二、读取与修改Session数据
已启动的Session可在同一会话周期内的任意脚本中访问,只需再次调用session_start()即可读取或更新$_SESSION中的内容。
1、在新PHP文件开头执行session_start()。
2、使用键名直接读取,例如:echo $_SESSION['user_id'];
3、可直接赋值修改,例如:$_SESSION['last_login'] = time();
三、销毁Session数据
销毁Session需清除客户端Cookie中的session_id,并删除服务器端对应的会话数据,确保敏感信息不被后续请求复用。
1、调用session_start()以加载当前会话。
2、使用session_unset()清空$_SESSION数组中的所有变量。
3、调用session_destroy()彻底删除服务器端的会话存储文件。
4、手动删除客户端session cookie:setcookie(session_name(), '', time() - 3600, '/');
四、配置Session生命周期与存储路径
Session默认有效期依赖于客户端cookie过期时间及服务器端垃圾回收机制,可通过ini_set或php.ini调整其行为。
1、设置Session Cookie有效期为30分钟:ini_set('session.cookie_lifetime', 1800);
2、设定服务器端Session文件保留时间为30分钟:ini_set('session.gc_maxlifetime', 1800);
3、更改Session存储目录:ini_set('session.save_path', '/var/tmp/php_sessions');
4、确保目标目录存在且Web服务器进程具有读写权限。
五、使用Session ID进行会话传递控制
Session ID是标识唯一会话的核心字符串,默认通过Cookie传递,也可通过URL参数显式传递,适用于禁用Cookie的场景。
1、启用URL传递模式:ini_set('session.use_cookies', 0);
2、启用URL重写支持:ini_set('session.use_only_cookies', 0);
3、在链接中嵌入SID:echo '跳转';
4、注意:启用URL传递会降低安全性,应避免在公开链接中暴露SID。










