2013-06-12 80 views
0

我爲使用會話的網頁編寫了代碼。我使用Mac並且工作正常。我在Windows上嘗試了我的頁面,會話似乎不起作用。事實證明,我聲明的會話變量不存在於其他頁面中。我在每一頁的開頭都使用了session_start()。我讀到的關於這個問題的解決方案之一是使用session_write_close(),但它不起作用。當我在$_SESSION上使用var_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); 

?> 

這裏是我試圖在將它們存儲在前一頁後使用會話變量的地方。

+0

看看餅乾。 – SLaks

+0

phpinfo()的會話部分是什麼? – frenus

+0

你在localhost上運行這個嗎? –

回答

1

在每個頁面頂部的事情之前的代碼否則應爲(確保它的頂行,因爲我已經把它)

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

,並在每個頁面投放的底部:

<?php ob_end_flush();?> 

不要在第一個代碼之前或第二個代碼之後放置任何東西。

+0

它沒有工作。 –

+0

@ aizen92你可以提供設置和讀取這些變量的代碼嗎? –

+0

....確保它在HTML標記之前 –