2013-07-14 91 views
1

我有一個功能完善的網站,它使用會話。唯一的例外是一個特定的頁面。該頁面執行一些數據庫選擇,驗證等等。 然後,在稍後的HTML部分,我得到了一個標籤。這期間,我已經得到了奇怪的PHP會話

<?php 
    $classes = explode(",", $_SESSION['classes']); 
    foreach ($classes as $class) { 
     echo "<option>".$class."</option>"; 
    } 
?> 

現在$ _SESSION [ '類']是一個逗號分隔的字符串。例如:「10 A,11 D,12 C」 這裏是奇怪的部分,當我加載這個頁面,一切正常,我得到一個下拉選擇選項10 A,11 D和12 C ...但,當我刷新頁面,我得到一個下拉框只有一個選項:Array

是的,它只是說數組....沒有其他選項。

不,我沒有設置該值後的任何其他PHP塊。事實上,我沒有另一個PHP塊之後,這一個

要調試它,我添加了一個php代碼塊:echo $_SESSION['classes'];後0123'標記,並在第一頁加載,它說10 A,11 D,12 C。刷新後,它說Array

然後我試圖var_dump($_SESSION);,它說["classes"]=> &string(9) "11 A,10 C"繼承人的最離奇的一部分:刷新後,它說["classes"]=> &array(2) { [0]=> string(4) "11 A" [1]=> string(4) "10 C" }並在另一個刷新,它說["classes"]=> &array(1) { [0]=> string(5) "Array" }

這只是發生我的網頁上主機,但不在我的本地服務器上。而且,僅此頁面

上我不知道是什麼導致了這一點,或如何解決它

+0

您可以某處編輯會議,試圖找到它。或者這將是奇怪的行爲 – 2013-07-14 09:09:26

+0

這是奇怪的行爲......就像我說的,我根本沒有改變會話變量。此外,它可以很好地在我的本地服務器上工作 –

+0

你可以發表完整的代碼嗎?此外,您正在使用哪個版本的PHP? –

回答

1

你可能有register_globals開啓,以便$classes被混有$_SESSION['classes']在一些點。

您應該關閉它們。 (Here's why.)

或者,如果由於任何原因將它們關閉不可能,請更改變量名稱。

+1

如果關閉它是不可能的,我可能會開始尋找一個新的主機(如果確實如此) –

+0

嗯,我認爲改變變量名稱解決了這個問題。我也改了一下腳本。看看我的答案。從https://wizpert.com/上的Wizpert獲得它:D –

0

Got it!

這是我的新代碼:

<?php 
    $classesBeingTaught[] = explode(",", $_SESSION['classes']); 
    foreach ($classesBeingTaught[0] as $classBeingTaught) { 
     echo "<option>".$classBeingTaught."</option>"; 
    } 
?>