Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 会话无法正常工作_Php_Session - Fatal编程技术网

Php 会话无法正常工作

Php 会话无法正常工作,php,session,Php,Session,我为使用会话的网页编写了代码。我用的是Mac电脑,它工作正常。我在Windows上尝试了我的页面,但会话似乎不起作用。事实证明,我声明的会话变量在其他页面中不存在。我在每页的开头都使用了session\u start()。关于这个问题,我读到的一个解决方案是使用session\u write\u close(),但它不起作用。当我在$\u SESSION上使用var\u dump()时,我只看到在同一页面中声明的内容(Mac和Windows都是这种情况)。在windows和Mac上,我使用了Ch

我为使用会话的网页编写了代码。我用的是Mac电脑,它工作正常。我在Windows上尝试了我的页面,但会话似乎不起作用。事实证明,我声明的会话变量在其他页面中不存在。我在每页的开头都使用了
session\u start()
。关于这个问题,我读到的一个解决方案是使用
session\u write\u close()
,但它不起作用。当我在
$\u SESSION
上使用
var\u dump()
时,我只看到在同一页面中声明的内容(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);

?>


在将会话变量存储到上一页后,我将尝试在此处使用它们。

在任何其他内容之前,每个页面顶部的代码都应该是(确保它位于我所放置的最上面一行)


在每一页的底部写上:

 <?php ob_end_flush();?>


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

phpinfo()的会话部分是什么意思?您是否在localhost上运行此操作?@SLaks如果我改为cookies,代码是否会发生剧烈变化@frenus
会话支持
已启用@Alex-Info.net是的我在本地计算机上运行它host@SLaks我想在所有页面上存储一个数组,但它似乎不适用于cookies,对吗?会话\u start的返回值是多少?页面是否在同一子域中?你在哪里写会话数据?@aizen92你能提供设置和读取这些变量的代码吗?我在上面的问题中添加了设置和读取变量的代码,这是我试图使用上一页会话中保存的变量的代码。如果需要更多的代码,请告诉我,以便我添加它们;刚开始课时。这是个错误吗?这将在您完成任何操作之前结束会话。我使用它删除以前使用过的会话,我在这里使用它是否错误?我认为这就是问题所在。尝试删除它。
 <?php ob_end_flush();?>