我开始学习php。我有一个关于会话的问题。
现在,我知道这session_start()
会创建一个会话变量。
我不知道的是,当我访问我创建的会话时,我需要session_start()
再次使用吗?
如果是...
为什么是这样?因为我已经创建了一个会话,我想知道为什么它不会持续整个浏览会话。
因为我从中了解到的是,它将创建一个新会话。
不:
session_start()
根据通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。
您访问的每个新页面都是 PHP 的全新上下文。session_start
允许您重新建立以前的上下文/会话/数据。
session_start 函数告诉 PHP 启用会话跟踪。它不会清除前一页创建的会话。您必须先调用 session_start(),然后才能访问 $_SESSION 中的任何变量。
由于手动session_start()
session_start
— 开始新的或恢复现有的会话
就像每次你想使用它时连接到数据库一样。它将连接到您存储会话的任何位置。会话变量没有消失。
还可以在此处阅读更多信息,但这应该有助于了解会话的工作方式:
当您使用应用程序时,您打开它,进行一些更改,然后关闭它。这很像一个会话。电脑知道你是谁。它知道您何时启动应用程序以及何时结束。但是在互联网上存在一个问题:Web 服务器不知道您是谁以及您在做什么,因为 HTTP 地址不保持状态。
PHP 会话通过允许您将用户信息存储在服务器上供以后使用(即用户名、购物项目等)来解决这个问题。但是,会话信息是临时的,将在用户离开网站后被删除。如果您需要永久存储,您可能希望将数据存储在数据库中。
会话通过为每个访问者创建唯一 ID (UID) 并基于此 UID 存储变量来工作。UID 要么存储在 cookie 中,要么在 URL 中传播。
会话数据存储在服务器端,但会话的引用或 id 存储在客户端的浏览器 cookie 中。为了让服务器知道您的会话 id,我们在每个页面上都需要调用session_start()
它(在顶部),因此首先要做的是从用户那里获取 id 并检索会话数据。每当您要访问会话数据时,每个页面都需要它。
不:它并不总是会创建一个新会话。它只告诉脚本此页面想要启动或维护现有会话。
会话只不过是您在页面之间携带的服务器上的状态。它不能从客户端(浏览器)访问。浏览器保持会话唯一必须做的就是传递一个 ID(在 PHP 中称为默认 PHPSESSID)。
此 ID 可以存储在 cookie、GET 或 POST 中,只要您在每次发出请求时将其传输到服务器即可。
答案是肯定的。你必须在每一页上都这样做。如果你不这样做,你会得到一个未定义的索引错误。
这将起作用,因为我们包含了文件
索引.php
<?php
session_start();
//file doesn't have session_start
include "file.php";
?>
你必须使用 session_start(),在任何你需要使用会话的地方,比如创建、访问、销毁。
与 cookie 不同,除非您启动会话,否则您无法访问或使用会话。