php如何知道启动新会话

php如何知道启动新会话,php,session,Php,Session,如果浏览器关闭并重新打开,PHP将启动新会话 旧会话文件仍保留在会话保存目录中,但新会话将启动 php在浏览器中寻找什么来知道它必须启动一个新会话 我想我真正想问的是,session_start()在引擎盖下到底做了什么包含会话id的cookie默认设置为没有过期。这意味着它将在浏览器关闭时过期。因此,会话将在此时丢失,因为客户端将不再具有旧会话ID。为了简单地回答您的问题,它会查找调用的cookie,如果请求中没有提供cookie,则会调用初始化cookie值 然后在浏览器的整个生命周期中持续

如果浏览器关闭并重新打开,PHP将启动新会话

旧会话文件仍保留在会话保存目录中,但新会话将启动

php在浏览器中寻找什么来知道它必须启动一个新会话


我想我真正想问的是,session_start()在引擎盖下到底做了什么

包含会话id的cookie默认设置为没有过期。这意味着它将在浏览器关闭时过期。因此,会话将在此时丢失,因为客户端将不再具有旧会话ID。

为了简单地回答您的问题,它会查找调用的cookie,如果请求中没有提供cookie,则会调用初始化cookie值

然后在浏览器的整个生命周期中持续使用cookie


除非应用其他设置,否则这是默认行为的精简版本。

您想知道的都写在这里了:

session_start()创建一个会话,或根据该会话恢复当前会话 通过GET或POST请求传递的会话标识符,或通过 饼干

当调用session_start()或会话自动启动时,PHP将 调用打开和读取会话保存处理程序。这些要么是一个 默认情况下或PHP扩展提供的内置保存处理程序(例如 作为SQLite或Memcached);或者可以是由定义的自定义处理程序 会话\设置\保存\处理程序()。读取回调将检索任何 现有会话数据(以特殊序列化格式存储)并将 未序列化并用于自动填充$\u会话 读取回调返回保存的会话数据时的超全局 到PHP会话处理

基本上,PHP在文件系统中写入一个特殊文件(通常在/tmp目录中)并从中获取数据。

会话ID()保存在用户浏览器的cookie中。如果没有找到/一个无效,它将创建一个。下面的图片可能有助于理解您想知道的内容(来自Chrome)


一旦PHP获得这个会话ID,它就会查找存储在会话中的响应会话(在unix机器上通常是
/tmp
)。然后,它使您能够使用superglobal访问存储在该会话文件中的信息。

只有在调用
session_start()
之前PHP页面上没有输出任何内容时,才会存储cookie。如果有输出,则不会存储cookie,您需要另一种方法(如前所述,
SQLite
MySQL
)来存储这些
唯一的
值,并识别和分离每个用户。

会话ID保存在用户浏览器中的cookie中。如果找不到/one无效,它会创建一个。我很确定如果没有活动会话,即任何旧会话都已过期,则会启动会话。php不查找任何内容,php get是一个名为
PHPSESSID
或类似名称的cookie。如果浏览器关闭,此cookie将被销毁。因此浏览器会自动删除cookie,除非php指定过期日期?