PHP会话系统允许您在$_SESSION
全局数组中安全地存储数据。一个典型的例子是当用户输入密码时,在会话中存储用户标识符:
if ($user = try_login($login, $password))
$_SESSION['user'] = $user;
然后,您可以在所有其他页面上访问该信息:
if (isset($_SESSION['user']))
// logged in !
echo user_name($_SESSION['user']);
数据存储在服务器上,因此不存在被篡改的风险(另一方面,注意磁盘使用情况)。
启动会话允许当前请求使用$_SESSION
。如果这是用户的第一次访问,则数组将为空,并为您发送一个新的会话cookie。
关闭会话仅防止当前请求使用$_SESSION
,但数据会留存在下一个请求中。
销毁会话永久删除所有数据。会话在最后一次访问后的一定时间内被销毁(通常约为30分钟)。
我猜你想知道PHP会话对程序员意味着什么。
当你执行session_start()时,你告诉PHP你想使用会话。这将以一个名为$_SESSION的数组形式提供给你。你可以像使用其他数组一样使用它,不同之处在于你放在里面的东西会从一个页面保留到另一个页面(前提是你在每个页面开头使用session_start())。
实际的机制可能因配置(php.ini)而异,但典型的安装可以使用cookie进行会话。假设你的Web服务器在Linux上并且你正在使用cookie,则可以执行以下操作:
session_start();
$_SESSION['name']='Bob';
当PHP看到这个时,它会创建一个半随机命名的文本文件(例如sess_a3tfkd5558kf5rlm44i538fj07),将$_SESSION内容以纯文本形式放在其中,然后向用户发送一个带有会话ID的cookie,该ID可用于找到会话文件(例如a3tfkd5558kf5rlm44i538fj07)。
下次用户回来时,他将在cookie中提交会话ID,PHP将访问相应的文件并加载其内容到$_SESSION中。
你会注意到实际信息被保留在服务器上,而用户只获得一个ID。就像在俱乐部交换外套并获得一个带有号码的票一样。
正如手册中所述
session_start()
会基于通过GET或POST请求传递的会话标识符或通过cookie传递的标识符创建一个会话或恢复当前会话。
如果您在登录页面开始新会话,则该会话最初为空。您可以将任何想要存储的内容存储在其中,例如,在用户登录后存储用户ID。会话数据在关闭会话时被销毁。
您可能希望阅读会话扩展手册页中的所有章节,并查看
<?php
session_start();
$_SESSION["name"] = "John";
?>
<?php
session_start();
echo $_SESSION["name"];
?>