gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:27:04 25 4
gpt4 key购买 nike

我正在尝试诊断 PHP 问题。我将值传递给 $_SESSION 数组,而这些值未被数组采用。我使用 var_dump($_SESSION) 查看返回的内容,我得到了 array (0){}。即使我知道正在设置 session 并且正在将值添加到数组中,也是如此。

这是我的代码 (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 文档并进行了高低搜索,但没有发现任何有用的信息。

我还应该注意到 session ID 在页面加载之间是相同的,因此 session 状态似乎在页面加载到页面加载之间保持不变。

在此先感谢您的帮助。

最佳答案

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

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

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

关于即使设置了值,PHP $_SESSION 也返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com