2012-07-21 63 views
0

我正在一個網站上工作,當前用戶可以選擇不同的城市查看..我不想讓這個城市保持在URL中,我不想依賴上的cookie,如果客戶端將不接受cookies ..我做這件事的會議,然後,但不知何故,該會話很早就停止,我不明白什麼是錯的..PHP會話以某種方式重置

if (isset($_GET['c'])) { 
unset($_SESSION['city']); 
$_SESSION['city'] = $_GET['c']; 
} 
if (empty($_SESSION['city'])) { 
$_SESSION['city']='07400'; 
} 
$city = $_SESSION['city']; 

我點擊後三位周圍的網頁,城市回到07400 ..在某些方面..會議得到空......但我不知道如何...

+0

可能您忘記了在開始時調用'session_start()'的腳本。 – martinstoeckli 2012-07-21 14:49:04

+3

使用會話時,您的功能僅適用於啓用了Cookie的用戶。 SessionID將存儲在發送給瀏覽器的cookie中。 – stefreak 2012-07-21 14:49:54

+0

如果您的第一個IF中的GET [「c」]爲空,會話變量也將變爲第二個IF,並獲取值07400 – Gntem 2012-07-21 14:50:31

回答

0

經過腳本足夠長的時間後,我發現,城市腳本沒有什麼問題...... Sessions沒有什麼問題..但是由於後來在腳本中出現了腳本錯誤,它將$ _SESSION ['city'] ..感謝所有回覆..並且感謝提示以查找錯誤,並且可能會更改會話ID ...

1

沒有可能性測試/調試您的項目,它是非常很難找出問題所在。儘管如此,這可能有助於讓您走上正軌:

我會在您要求的每個頁面上給出會話IDprint(session_id());

如果會話標識更改爲,則表示您已丟失會話並應檢查id如何傳遞並重新創建會話(cookie,id in url,session_start)。我還會在頁面的開始部分編寫代碼error_reporting(E_ALL);,以查看是否收到頭文件已發送的警告。

如果會話標識保持不變,會話將被正確地重新創建。然後我會搜索項目的代碼,寫入會話並可能重置變量。