会话 ID 用于识别服务器端会话信息,例如代客密钥。当一个有效的 ID 被传递(通过任何方式)时,PHP 可以访问数据。
会话通常用作存储用户身份验证详细信息的一种方式。成功登录站点后,您可以启动一个会话来存储一些用户数据,以便后续的页面查看可以决定是否允许使用私人信息。
例如,登录后您可能有:
session_start();
session_regenerate_id(true); // avoid trivial session fixation
$_SESSION['valid'] = true;
$_SESSION['user_id'] = 123; // identify the user
// whatever else you want to add in your session
header('Location: /index.php'); // redirect the user after signing in
$_SESSION['valid']
是防止会话采用攻击的令牌;但是,通过使用session_regenerate_id
它变得不那么重要了。在后续页面查看时,您可以编写此代码来检查会话是否有效以及用户是否已登录:
session_start();
if (!isset($_SESSION['valid'])) {
die("Invalid session");
}
// do stuff with $_SESSION['user_id']
会话 ID 主要可以通过两种方式传递:通过 cookie(常见)或通过$_GET
(不太常见)。会话 ID 的传递方式由 .ini 设置决定:
- session.use_cookies(是否使用cookies)
- session.use_only_cookies(是否只允许cookies,不通过via
_GET
)
在这里阅读更多:http: //sg.php.net/manual/en/session.configuration.php