PHP session 怎么用
在网页浏览时,你肯定有过这样的经历:登录购物网站后,不管切换到商品页还是结算页,系统都能认出你是已登录状态;网购车里加的商品,换个页面也不会消失。这些功能的实现,离不开一个叫“会话(Session)”的东西,而在PHP里,它是开发这类功能最常用的工具。
Session是什么,和你平时用的“临时存东西”有啥区别
很多人会把Session和Cookie搞混,其实可以用“去饭馆吃饭”来理解:Cookie是你手里的会员卡,存在你的浏览器里,每次去不同的桌(打开不同页面)都会拿出来刷一下证明身份;而Session是饭馆后台的登记本,上面写着“3号桌的客人是张三,点了酸菜鱼”,这个登记本只存在服务器上,而且只会保留到你吃完结账离开(关闭浏览器或超时)。

简单说,Session的核心是“给每个用户分配专属的临时存储空间”,你不用记任何复杂的东西,PHP会自动帮你管理每个用户的身份和临时数据。
第一步:开启Session,就像给你发专属柜子
用PHP的Session,第一步是开启它,就像去饭馆先给你找个专属的小柜子放随身物品。这个操作非常简单,只要在PHP代码的最开头(还没输出任何网页内容之前)加一行代码:
`php
session_start();
`
注意哦,这行代码不能放在任何HTML输出的前面,不然会报错——就像你不能先把菜端上来,再给客人发柜子,顺序不能乱。
第二步:存数据到Session,专属柜子放私人物品
开启Session后,就可以往里面存东西了,用法和给数组赋值一模一样。比如你做了一个登录功能,想把用户的名字存下来,下次打开页面不用重新输:
`php
// 把用户名字存到Session里,键是"username",值是"小明"
$_SESSION['username'] = '小明';
// 还可以存购物车的商品,比如加个苹果
$_SESSION['cart'][] = '苹果';
`
这里的$_SESSION是PHP自带的超全局数组,每个用户的Session数据是独立的,你存的小明的名字,不会被隔壁桌的小刚看到,就像你的专属柜子只有你能打开。
第三步:取Session数据,打开柜子拿东西
存好之后,要用的时候直接从$_SESSION里拿就行。比如要显示“欢迎小明回来”,就可以这么写:
`php
// 先判断Session里有没有这个数据,避免没登录就访问出错
if (isset($_SESSION['username'])) {
echo '欢迎回来,' . $_SESSION['username'];
} else {
echo '请先登录';
}
`
如果是要显示购物车,循环输出$_SESSION['cart']里的内容就可以,是不是很简单?
收尾:销毁Session,用完就关柜子
Session是临时的,默认会在用户关闭浏览器后自动销毁,但如果想提前让用户“退出登录”,就需要主动销毁Session。比如退出登录的代码:
`php
// 清空Session里的所有数据
$_SESSION = array();
// 如果是用Cookie存了Session的ID,也顺便删掉,避免残留
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-3600, '/');
}
// 最后彻底销毁Session
session_destroy();
`
就像你吃完饭,把柜子里的东西拿走,告诉饭馆这个柜子不用了,下次就不会再给你用这个柜子的空间了。
现在你应该明白,PHP的Session不是什么复杂的技术,就是给每个用户开个专属临时储物箱,用来存登录状态、购物车这类需要跨页面用的信息。只要记住“先开启、再存、再取、不用就销毁”的步骤,就能轻松实现网页里的用户识别功能啦。