会话无法正常工作

时间:2013-06-12 13:49:13

标签: php session

我为使用会话的网页编写了代码。我正在使用Mac,它工作正常。我在Windows上尝试了我的页面,会话似乎不起作用。事实证明,我声明的会话变量在其他页面中不存在。我在每个页面的开头都使用了session_start()。我读到的有关此问题的解决方案之一是使用session_write_close(),但它不起作用。当我在var_dump()上使用$_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);

?>

以下是我在将会话变量存储到上一页后尝试使用会话变量的地方。

1 个答案:

答案 0 :(得分:1)

每个页面顶部的代码应该是其他任何内容(确保它在我放置的顶线上)

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

在每个页面的底部放置:

 <?php ob_end_flush();?>

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