PHP $_SESSION 即使设置了值也返回空数组

2023-12-12

我正在尝试诊断 PHP 问题。我正在将值传递给$_SESSION数组,并且这些值不被数组获取。我用了var_dump($_SESSION)看看返回了什么,我得到array (0){}。即使我知道正在设置会话并将值添加到数组中,情况也是如此。

这是我的代码的简化版本(index.php):

<?php
session_start();
var_dump($_SESSION); 

if ($_REQUEST['query'] == "" or is_null($_REQUEST['query'])) {
$errormsg = "You must enter a search term to query.  Please try again.";
}

?>

<form name="product_search" id="product_search" method="post" action="index.php">
<input size="60" type="text" name="query" id="query" <?php echo "value=\"" .  $_REQUEST['query'] . "\" "; ?>/>
<?php if (isset($errormsg)) {echo "<span class=\"errormsg\">" . $errormsg . "</span>";} ?>
<input type="submit" class="searchBtn" value="Search"/>

<?php
    $_SESSION['query'] = 'foo';
    $_SESSION['search_field'] = 'man';
    $_SESSION['results'] = 'chu';
?>

var_dump($_SESSION); //Will dump array(3) {...}

重新创建错误:

  1. 加载页面。这里没问题;var_dump($_SESSION)在顶部返回array(0) {},这是预期的,底部的返回一个三成员数组,也符合预期。
  2. 提交在查询字段中包含某些内容的表单(以阻止验证)。尽管$_SESSION在上一页加载时设置变量,第一个转储仍然返回array(0) {}.

我在这里简化了代码来解决问题,但是我有另一个页面毫无困难地返回 $_SESSION 变量(第一个页面var_dump生成一个单成员数组)。这里的问题是我将表单提交给自己,如果是这样,除了$_SESSION数组将值从一个页面加载传递到下一个页面?我查看了 PHP 文档并进行了大量搜索,但没有发现任何有帮助的内容。

我还应该注意到,会话 ID 在页面加载之间是相同的,因此看起来会话状态在页面加载之间一直保持着。

先谢谢您的帮助。


使用每个网页顶部的这一行:

if (!isset($_SESSION)) { session_start(); }

如果你初始化$_SESSION进入较低级别的脚本,则`$_SESSION 变量在较高级别中不可访问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP $_SESSION 即使设置了值也返回空数组 的相关文章

随机推荐