$_SESSION 是一个特殊的数组,用于存储用户在访问您的网站或 Web 应用程序期间提出的跨页面请求的信息。
虽然可能有许多用户同时访问该站点,每个用户都有自己的会话,这要归功于 PHP 为每个会话分配和管理的唯一 ID,这使得每个用户的会话只能对他自己可用。会话信息存储在服务器上而不是用户的计算机上(作为存储 cookie 数据),这使得会话在页面请求之间传递信息比传统 cookie 更安全。
使用会话
在您可以在会话中存储信息之前,您必须启动 PHP 的会话处理。这是在 PHP 代码的开头完成的,并且必须在任何文本、HTML 或 JavaScript 发送到浏览器之前完成。要开始会话,请在第一个文件中调用 session_start() 函数:
<?php
// start the session
session_start();
// store session data
$_SESSION["username"] = "Qateel";
session_start() 启动用户和服务器之间的会话,并允许稍后在其他脚本中访问存储在 $_SESSION 中的值。
在您的第二个文件中,您再次调用session_start(),这一次会继续会话,然后您可以从$_SESSION 检索值。
<?php
// continue the session
session_start();
// retrieve session data
echo "Username = " . $_SESSION["username"];
结束会话
开始一个会话很重要,结束一个会话也很重要。尽管会话只是存储数据的一种临时方式,但在处理潜在敏感信息时,自行清理以确保最大安全性非常重要。这也是一种很好的做法,可以避免在服务器上放置大量陈旧的会话数据。
要删除单个会话值,请使用unset() 函数:
<?php
session_start();
// delete the username value
unset($_SESSION["username"]);
要取消设置会话的所有值,您可以使用 session_unset() 函数:
<?php
session_start();
// delete all session values
session_unset();
这两个示例只影响存储在会话中的数据,而不影响会话本身。如果您愿意,您仍然可以在调用它们之后将其他值存储到$_SESSION。如果您希望完全停止使用会话,例如用户注销,您可以使用session_destroy() 函数。
<?php
session_start();
// terminate the session
session_destroy();
小贴士
尽管很简单,但使用会话的方法仍有可能出错。
如果您正在处理登录到您的网站或应用程序的用户,那么超时会话是一项非常重要的操作。
if (isset($_SESSION["timeout"])) {
// calculate the session's "time to live"
$sessionTTL = time() - $_SESSION["timeout"];
if ($sessionTTL > $inactive) {
session_destroy();
header("Location: /logout.php");
}
}
在您知道数据将被持久化的最早时刻使用数据库存储数据;不要让它作为会话的一部分停留太久,因为这会导致可能的攻击。
当您不再需要使用会话时,请使用 session_destory()。
你可能想通过: