【发布时间】:2015-06-02 23:59:04
【问题描述】:
好的,我刚刚注意到这个问题。必须有办法解决它。
示例... 在页面 A.php 和页面 B.php 上,有一个指向页面 ALPHABET.php 的链接。 ALPHABET.php 接收指定的变量值,具体取决于哪个页面是引荐来源。
所有涉及的页面都有 session_start();一开始。
页面A.php有:
<?php
$_SESSION['name'] = "John";
?>
页面 B.php 有:
<?php
$_SESSION['name'] = "Jane";
?>
页面 ALPHABET.php 有:
<?php
$personName = $_SESSION['name'];
echo "Hello, I am ".$personName;
?>
我决定不关闭 ALPHABET.php 中的会话,因为我希望在某些刷新页面时信息仍能正确加载。如果会话关闭,则 $_SESSION['name'] 将不存在或没有值。
这一切都很好,直到我同时加载了两个页面,A.php 和 B.php(通过新标签)。我注意到,当我在其中任何一个页面上单击指向 ALPHABET.php 的链接时,它并不总是从引荐来源页面获取会话信息。我注意到在这种情况下,最后加载的页面将在 ALPHABET.php 中显示其信息,而不是我单击链接的页面。
即我加载了两个页面。首先是 A.php,然后我在新选项卡中打开 B.php。我单击 A.php 内的 ALPHABET.php 链接。 ALPHABET.php 加载 B.php 的信息。我认为这是因为 B.php 是加载的最后一页,因此它覆盖了 A.php 中的所有会话数据并用自己的替换它。
有解决办法吗?
【问题讨论】:
-
为了展开更多,我的 A.php 和 B.php 示例是我的问题的淡化示例。实际上,我有超过 100 个页面,例如 A.php 和 B.php,并且还在不断增长。这就是为什么 A.php 和 B.php 将相同的变量传递给 ALPHABET.php,因此Alphabet 可以只获取信息并将其插入通用变量并显示它。
标签: php variables session overwrite