2012-02-09 23 views
0

在IE8的PHP會話在這裏有一個大問題。我已經做了一些在網絡上的研究,但沒有例子匹配(或我不能將它們翻譯成我的場景)IE8失去了一些PHP會話變量,同時保持其他完整的刷新或ajax調用

我有一個網站,使廣泛使用會議有多個值和數組保留在會話變量。一切工作正常鉻和Firefox,但部分系統在IE8上打破,因爲它似乎只是簡單地刷新後的會話信息。該網站上的所有會話變量都經歷了相同的各種操作,包括標題(位置)重定向,Apache網址重寫等。

並非所有會話都會變化。這裏是例子。當我登錄並將信息保存到會話中時(例如$ _ SESSION ['user']),它在整個站點都能正常工作,並且我沒有被註銷($ _SESSION ['user']沒有丟失) 。一個同時壽我指定不同的會話瓦爾,他們可能會丟失在刷新即使壽登錄變種仍然存在

下面是部分一些代碼,不會對IE8

1)我的工作在頁面上有一個鏈接,允許你正在查看的編輯頁面,讓說,鏈接是/ edititem/ID

2)點擊它鏈接到一個PHP文件,檢索項目的數據,並保存會話var數組。該數組中的一個字段決定了哪些html元素將顯示在編輯表單上。之後會話瓦爾的成立,有一個頭()重定向

session_start(); 
    $item = Item::getById($_GET["id"]); 
    $_SESSION["item"]["type"] = $item->type; 
    $_SESSION["item"]["title"] = $item->title; 
    $_SESSION["item"]["action"] = "edit"; 
    header('location: /item_management'); 

3)在IE8上登陸/ item_management頁以下時,即重定向,一切正常。當我刷新頁面時,上面設置的會話信息消失了

我閱讀了關於在IE8上包含_的URL的可能問題。我在某個階段更改了這些網址以便使用 - 而不是_但這沒有幫助,所以我恢復了原狀。 我也認爲這可能是會話中的數組的一些問題,但至少有一個地方在代碼中的非數組會話在ajax調用時被丟失(我有$ _SESSION [「圖像」],做一個ajax調用,閱讀'圖像'var在PHP調用Ajax和它是空的)。

此外,用戶會話var爲整個系統完好,甚至儘管其他值失蹤

相關的所有會話的東西可以完美運行在Chrome/Firefox中

任何想法?我會提供任何所需的代碼

+1

你確定IE正在接受會話cookie嗎?只是缺少這些變量,還是整個會話是空的? – Leigh 2012-02-09 12:49:57

+0

只是這些變量加上網站上的其他幾個人(例如,我提到的SESSION [「image」] - 它在ajax調用上迷路了)...就像我寫的,用戶會話完好無損...否則我會註銷 – 2012-02-09 13:01:56

+0

做了更多的測試,我不確定發生了什麼。會話ID肯定遍及整個網站,包括ajax調用。我在測試中發現的非常奇怪的行爲是,如果我擁有SESSION [「ad」] []數組並且分配了大約10個值,它將在重定向後保留所有這些值,但是會佔多數(但不是全部)刷新後的值。我確保代碼中沒有其他部分在途中使用該會話var進行操作,並且沒有這樣的代碼。每次創建新創建之前,我還會修改會話[「ad」] – 2012-02-09 15:24:57

回答

0

我注意到我的內部Web應用程序也出現同樣的問題。某些會話變量,尤其是剛剛更新到數據庫中的會話變量,在刷新時會丟失,甚至還原爲變量的較舊值。我還沒有找到解決方案,所以我一直讓我的用戶使用與IE不同的瀏覽器。

所以,我想唯一的解決方案,如果你可以讓人們知道IE瀏覽器有奇怪的行爲,他們應該嘗試使用不同的瀏覽器,如果使用您的應用程序。