2011-11-24 94 views
0

這是我的代碼:

// Save stuff to session 
$_SESSION['uid'] = $uid; 
$_SESSION['name'] = $user_profile[name]; 

// Redirect to test page 
header('Location: http://www.justwalk.it/test.php') ; 

如果我打印會話而不是重定向的我,沒有任何問題得到它:

Array ([uid] => xx [rank] => xx [name] => xx) 

然而,在test.php的重定向時,我已經無法打印會話。唯一的代碼test.php的是:

<? session_start(); 
print_r($_SESSION);?> 

但它打印array()$_SESSION['uid']根本不會返回任何東西。

我不認爲會話已被取消設置,因爲它有時在我的頁面上的其他地方彈出。它根本無法一直訪問。我不知道爲什麼。我究竟做錯了什麼?或者如果我沒有做錯什麼可能是這個問題的原因?

+8

可能是一個愚蠢的問題,但你記得在將值保存到$ _SESSION之前session_start()嗎? – GordonM

+1

'justwalk.it'是你目前所在的域名嗎? –

+0

確保您在使用'$ _SESSION'超全局之前在每個**頁面上調用'session_start();',無論您是分配*還是*讀取值。 – Paulpro

回答

0

如果沒有代碼取消設置會話,則可能需要檢查您是否使用非www版本的URL訪問原始腳本,然後重定向到www。

如T1000提到的,另一個原因可能是在session_start()之前發送的輸出,UTF8 BOM字符因引起有時看不見的輸出而臭名昭着。

+0

就是這樣。我剛剛回答我自己的問題,第一個文件沒有www。我正在重定向到www。我不知道這件事發生了,謝天謝地我發現我的筆記本電腦通過窗口 – lisovaccaro

+0

它總是小事:) –

0

檢查您是否在session_start()之前向瀏覽器發送HTML或其他東西... 您也可以將error_reporting設置爲E_ALL並檢查日誌文件。

0

在test.php的,檢查的session_start()沒有返回FALSE,其表示未能建立或恢復會話:如果是這樣的問題

if (! session_start()) die "OMG, total session asplosion."; 

,你可能必須要經過你的錯誤日誌找出發生了什麼。 (其實,任何在你的錯誤日誌?)