0

我为使用会话的网页编写了代码。我正在使用 Mac,它工作正常。我在 Windows 上尝试了我的页面,但会话似乎不起作用。事实证明,我声明的会话变量在其他页面中不存在。我session_start()在我拥有的每一页的开头都使用了。我读到的关于这个问题的解决方案之一是使用session_write_close(),但它不起作用。当我使用var_dump()on时,$_SESSION我只看到在同一页面中声明的那些(Mac 和 Windows 都是这种情况)。在 Windows 和 Mac 上,我使用 Chrome。我认为它在 Mac 上工作的原因之一是因为我没有收到错误,它只是工作,但是,在 Windows 上,我得到错误行,它说我正在使用的会话索引是未定义的。

我的情况有什么问题?我该如何解决?

编辑:

这是在会话中设置变量的代码,这是页面的第一个块

<?php

session_start();

session_destroy();

$_SESSION["contestant_name"]["topics_done"] = array( FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE ); // topics done
$_SESSION["contestant_name"]["topics_score_correct"] = array();
$_SESSION["contestant_name"]["topics_score_wrong"] = array();
$_SESSION["contestant_name"]["correct"] = 0;
$_SESSION["contestant_name"]["wrong"] = 0;

?>

这是读取变量的代码

<?php

session_start();

if (isset($_POST["submit"]))
    $name = $_POST["name"];

if(!isset($_SESSION["contestant_name"]["name"]))
$_SESSION["contestant_name"]["name"] = $name;

// if ($_SESSION["contestant_name"]["name"] == "")
//  $_SESSION["contestant_name"]["name"] = $name;

print $_SESSION["contestant_name"]["name"];

$arr = $_SESSION["contestant_name"]["topics_done"]; // getting it as null or empty

var_dump($_SESSION);

print count($arr);
print_r($arr);

?>

这是我在将会话变量存储在前一页之后尝试使用它们的地方。

4

1 回答 1

1

每页顶部的代码应该是其他任何东西之前的代码(确保它在我所说的第一行)

 <?php session_start();
 ob_start();?>

并在每一页的底部放置:

 <?php ob_end_flush();?>

不要在第一个代码之前或第二个代码之后放置任何内容。

于 2013-06-12T19:49:09.450 回答