Php 为什么从新选项卡窗口使用页面时,$\u SESSION的值会被覆盖?

Php 为什么从新选项卡窗口使用页面时,$\u SESSION的值会被覆盖?,php,session,Php,Session,我对PHP很陌生,请原谅我的无知。我面临的问题是会话变量,如以下 $_SESSION["input_file"] = $_REQUEST['selected_file']; 为了测试我制作的网页,我在firefox浏览器的多个选项卡中打开该网页,然后在每个选项卡上单击submit。但当我这样做时,会话变量在较旧的提交中被较新的提交覆盖。为什么每个网页没有与之关联的唯一会话?这是因为在分配新值之前,您没有检查会话变量是否为空。只要代码被执行,您就给它赋值 你需要这样做 if(!empty($_S

我对PHP很陌生,请原谅我的无知。我面临的问题是会话变量,如以下

$_SESSION["input_file"] = $_REQUEST['selected_file'];

为了测试我制作的网页,我在firefox浏览器的多个选项卡中打开该网页,然后在每个选项卡上单击submit。但当我这样做时,会话变量在较旧的提交中被较新的提交覆盖。为什么每个网页没有与之关联的唯一会话?

这是因为在分配新值之前,您没有检查会话变量是否为空。只要代码被执行,您就给它赋值

你需要这样做

if(!empty($_SESSION["input_file"])){
    $_SESSION["input_file"] = $_REQUEST['selected_file'];
}


会话由ID标识,通常存储在cookie中。由于浏览器会话在所有选项卡和窗口上共享cookie,因此您必须创建多个浏览器配置文件才能测试多用户情况。

如果在页面加载之间会话是唯一的,那么它们将完全无用。它们的存在使得数据可以跨页面加载持久化。那么,我应该为多个用户做些什么呢?如何使它们对于在不同窗口/浏览器/计算机中打开的页面具有唯一性?对于多个用户来说,这很好。您的问题是因为您正在浏览器的所有浏览器选项卡中查看同一会话。如果您想测试多个用户,请同时运行不同的浏览器和/或以匿名模式运行。您的意思是,如果我从不同的设备访问该页面,它将是唯一的?同一台计算机上的不同浏览器呢?它们将被视为不同的用户。浏览器/服务器连接之间的会话是唯一的跨所有窗口的会话是什么意思。你的意思是,如果我打开两个firefox窗口(而不是同一个firefox窗口上的选项卡),我也会遇到同样的问题?我不知道这将如何解决问题。会话变量仍将被新选项卡窗口覆盖。不是吗?@pythonic创建了一个会话数组,而不是我在y中所说的变量comment@pythonic当页面在“新建”选项卡中打开时,代码经过测试,旧值仍然存在于会话中。
if(!isset($_SESSION["input_file"])){
    $_SESSION["input_file"] = $_REQUEST['selected_file'];
}