我为使用会话的网页编写了代码。我正在使用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);
?>
以下是我在将会话变量存储到上一页后尝试使用会话变量的地方。
答案 0 :(得分:1)
每个页面顶部的代码应该是其他任何内容(确保它在我放置的顶线上)
<?php session_start();
ob_start();?>
在每个页面的底部放置:
<?php ob_end_flush();?>
请勿在第一个代码之前或第二个代码之后放置任何内容。