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