【问题标题】:Why is PHP $_SESSION returning empty on different PHP files?为什么 PHP $_SESSION 在不同的 PHP 文件上返回空?
【发布时间】:2017-01-27 12:46:17
【问题描述】:

我正在尝试使用 $_SESSION 在 PHP 中将随机生成的数字从一个页面传输到另一个页面。每次我在第二页上print_r($_SESSION) 时,数组都会返回空。但是当我在第一页上print_r($_SESSION) 时,它会显示在整个脚本中添加的所有数据。

这是我得到的代码:

pageOne.php

<?php session_start(); ?>
<!-- Some HTML -->
<?php
$counter = 0;
while (counter <= 9) {
    genData($counter);
    $counter++;
}
// genData function
function genData($count) {
    $number = rand(1, 10);
    $_SESSION[$count] = $number;
}
// print_r() to check data has been added
print_r($_SESSION);
?>

pageTwo.php

<?php
session_start();
// print_r to make sure data has been carried forward
print_r($_SESSION);
// unset and destroy session
session_unset();
session_destroy();
?>

pageOne 上 print_r() 的输出如下所示:

数组 ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9)

而在 pageTwo 上只是这样:

数组( )

我一直在使用 PHP 7.1.0 并通过 atom.io 托管本地 PHP 服务器,我也在 c9.io 和 XAMPP 上尝试过,但我仍然遇到同样的问题。我还检查了会话 ID,它们总是相同的。

我不确定这是我的 PHP 配置问题还是我的代码问题。

【问题讨论】:

  • pageTwo.php 上,您正在打印$_SESSION。例如,您应该print_r($_SESSION[0])print_r($_SESSION['0']); 不确定。
  • 使用浏览器开发者工具确定会话 ID cookie 是否改变。检查会话目录以查看文件是否正在生成并包含数据。
  • @AntonisTsimourtos print_r($_SESSION) 应该输出孔数组...
  • @AntonisTsimourtos 一个空数组怎么可能在键 0 上有一个项目?
  • @mr.void 哦,好的,这是一个有用的提示 - 不知道!

标签: php arrays session


【解决方案1】:

在 pageOne.php 上试试这个代码

<?php session_start(); ?>
<!-- Some HTML -->
<?php
$counter = 0;
while ($counter <= 9) {
    genData($counter);
    $counter++;
}
// genData function
function genData($count) {
    $number = rand(1, 10);
    $_SESSION[$count] = $number;
}
// print_r() to check data has been added
print_r($_SESSION);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多