我正在尝试诊断 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) {...}
要重新创建错误:
- 加载页面。这里没问题;
var_dump($_SESSION)
顶部的返回array(0) {}
,这是预期的,底部的返回一个三成员数组,也如预期的那样。 - 在查询字段中提交带有某些内容的表单(以失败验证)。尽管
$_SESSION
在前一页加载时设置了变量,但第一个转储仍然返回array(0) {}
。
我在这里简化了我的代码来解决这个问题,但是我有另一个页面毫无困难地返回了一个 $_SESSION 变量(并且第一个页面var_dump
产生了一个成员数组)。这里的问题是我将表单提交给自己吗,如果是这样,除了$_SESSION
数组之外还有其他方法可以将值从一个页面加载传递到下一个页面吗?我查看了 PHP 文档并搜索了高低,但没有发现任何有帮助的东西。
我还应该注意,会话 ID 在页面加载时是相同的,因此看起来会话状态从页面加载到页面加载都在维护。
在此先感谢您的帮助。