什么是 PHP session_start()

2022-08-30 17:41:12

它是否基于 Cookie 启动当前会话?从PHP网站获得。PHP 如何控制会话?如果我在用户打开我的登录页面时启动会话,我甚至会将该会话用于什么目的?我可以使用当前会话来获取有关登录用户的信息吗?


答案 1

PHP 会话系统允许您将数据安全地存储在全局数组中。一个典型的示例是,当用户键入密码时,将用户的标识符存储在会话中:$_SESSION

if ($user = try_login($login, $password)) 
  $_SESSION['user'] = $user;

然后,您可以在所有其他页面上访问该信息:

if (isset($_SESSION['user']))
  // logged in !
  echo user_name($_SESSION['user']);

数据存储在服务器上,因此没有篡改的风险(另一方面,请注意您的磁盘使用情况)。

启动会话可让当前请求使用 。如果这是用户的第一次访问,则数组将为空,并会向您发送新的会话 Cookie。$_SESSION

关闭会话只会阻止当前请求使用 ,但数据会保留给下一个请求。$_SESSION

销毁会话会永远丢弃所有数据。会议在最后一次访问后的一定时间内(通常在30分钟左右)被摧毁。


答案 2

我假设你想知道PHP会话对你,程序员意味着什么。

当你做session_start()时,你是在告诉PHP你想使用会话。它作为名为 $_SESSION 的数组提供给您。你可以像任何其他数组一样使用它,不同之处在于你放在那里的东西从一个页面到另一个页面都停留在那里(前提是你在每个页面的开头使用session_start()。

实际机制可能因配置(php.ini而异),但典型的安装可以为会话使用cookie。让我们假设您的Web服务器在Linux上,并且您使用的是cookie。您执行以下操作

session_start();
$_SESSION['name']='Bob';

当PHP看到这一点时,它会创建一个具有半随机名称的文本文件(例如sess_a3tfkd5558kf5rlm44i538fj07),将$_SESSION内容作为纯文本粘贴在那里,然后使用会话ID向用户发送一个cookie,该cookie可用于查找会话文件(例如a3tfkd5558kf5rlm44i538fj07)。

下次用户回来时,他会在他的cookie中输入会话ID,PHP会转到相关文件并以$ _SESSION加载其内容。

您会注意到,实际信息保留在服务器上,而用户仅被授予一个 ID。有点像在俱乐部里交出你的外套,然后得到一张带有号码的票。


推荐