会话 ID 的主要用途之一是识别 Web 应用程序上的用户或事件。本文将解释如何借助内置的 PHP 函数(如 session_start()
和 session_id()
)使用 PHP 会话 ID。
使用 session_id()
函数检查会话 ID
在检查会话 ID 之前,你需要使用 session_start()
启动 PHP 会话。之后,你可以调用 session_id()
函数。此函数将返回当前会话 ID。
<?php
session_start();
echo session_id();
?>
输出:
3rd5hnbqgjhi3fq4b2edsajq81
从 PHP 中的 $_session[]
变量设置和获取用户会话 ID
PHP $_SESSION
变量 是一个关联数组,包含当前脚本的 PHP 会话变量。你可以将特定的键值对添加到数组中,将其从数组中删除,或者清空整个 $_SESSION
变量。
你可以将经过身份验证的用户的详细信息存储在 $_SESSION
变量中。在此之前,你需要启动一个 PHP 会话。一旦会话处于活动状态,你就可以为经过身份验证的用户注册会话。之后,你可以使用会话 ID 在系统中跟踪用户。当用户注销时,你可以销毁会话。
在下一个代码块中,你将找到有关如何设置和获取用户会话 ID 的详细信息。
<?php
// Start the session
session_start();
// get the session id
$session_id = session_id();
// The username of the user. On most occasions,
// you'll get this from a MySQL query
$username = "DelftStack";
// Register a session for the user
$_SESSION['username'] = $username;
// Display the session id and the registered
// register
echo "The session id is: " . $session_id;
echo "<br /> The session has been registered to: " . $username;
?>
输出:
The session id is: d7ao75228pobka332fqeho10l3
The session has been registered to: DelftStack
请记住,你的会话 ID 将与上面显示的不同。
你可以使用以下代码销毁会话:
<?php
if (isset($_SESSION['username'])) {
// Reset the session
unset($_SESSION);
// Destroy the session
session_destroy();
if (empty($_SESSION)) {
echo "Session destroyed...";
}
}
?>
输出:
Session destroyed...
在 PHP 中使用 var_dump()
获取会话 ID
var_dump()
函数将转储有关变量的详细信息,包括 $_SESSION[]
变量。启动会话并将会话 ID 存储在变量中以开始此过程。一旦会话 ID 在变量中,你可以使用 var_dump
转储它。
下一个代码块展示了如何使用 var_dump()
获取会话 ID。
<?php
// Start the session
session_start();
// get the session id
$session_id = session_id();
// store the session id in the
// session variable
$_SESSION['id'] = $session_id;
// Dump the username
var_dump($_SESSION['id']);
?>
输出:
string(26) "7qfm3qvjj1vku6h78p73qh9jmn"
会话 ID 和唯一性
当你需要用户的唯一标识符时,建议不要启动新会话。这就是像 uniqid()
这样的函数发挥作用的时候。但是,如果你有一个活动会话,则可以使用 session_id()
。不过,不要依赖它来获得唯一性。
原因如下:具有多个选项卡的 Web 浏览器将使用相同的过程。因此,它们将使用相同的会话标识符。这意味着不同的用户连接将具有相同的 id。