我正在尝试诊断 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) {...}
Run Code Online (Sandbox Code Playgroud)
要重新创建错误:
var_dump($_SESSION)顶部的返回array(0) {},这是预期的,底部的返回一个三成员数组,也符合预期。$_SESSION在上一页加载时设置了变量,第一个转储仍然返回array(0) {}。我在这里简化了代码来解决问题,但是我有另一个页面可以毫无困难地返回 $_SESSION 变量(第一个页面var_dump生成一个成员数组)。这里的问题是我将表单提交给自身,如果是这样,除了数组之外还有其他方法$_SESSION可以将值从一个页面加载传递到下一个页面吗?我查看了 PHP 文档并进行了大量搜索,但没有发现任何有帮助的内容。
我还应该注意到,会话 ID 在页面加载之间是相同的,因此看起来会话状态在页面加载之间一直保持着。
先谢谢您的帮助。
小智 7
使用每个网页顶部的这一行:
if (!isset($_SESSION)) { session_start(); }
如果您初始化$_SESSION到较低级别的脚本,则在较高级别中无法访问`$_SESSION 变量。
确保您的服务器配置允许会话 cookie。
session.use_cookies = 1
Run Code Online (Sandbox Code Playgroud)
另一种方法是会话 ID 在 GET 中传递,您必须将其专门附加到您的表单操作中,而您并没有这样做。因此,一旦发布值,就不会进行任何会话。
| 归档时间: |
|
| 查看次数: |
33635 次 |
| 最近记录: |