2010-11-06 95 views
5

我有一個Facebook iFrame應用程序(用PHP編寫),當我在IE8中運行它時,我的會話數據不會持久。Facebook/IE8-會話沒有被持久

我使用Symfony 1.4並嘗試了Symfony的會話包裝和$ _SESSION。

我設置了兩個測試頁面:第一個定義$_SESSION['foo'] = 'bar'並調用print_r($_SESSION)。第二頁也叫print_r($_SESSION)。我看到我的會話變量設置在第一頁,但不是第二頁。

在Firefox和Chrome中一切正常,我有另外兩個人在運行IE8的不同PC上測試它,他們也有同樣的問題。

我試圖從我的頁面上刪除任何Facebook的JavaScript,認爲它可能以某種方式干擾,但沒有解決任何問題。

任何幫助將不勝感激,謝謝!

+0

可能的重複[如何正確處理會話和訪問令牌與Facebook的PHP SDK 3.0?](http://facebook.stackoverflow.com/questions/6468103/how-to-properly-handle-session-並訪問令牌與Facebook的PHP的SDK - 3-0) – rjmunro 2012-02-27 17:04:30

回答

23

經過一番研究,這是Facebook iframe應用程序和Internet Explorer的特定問題。幸運的是,解決方案非常簡單,我只需要添加此代碼header('P3P: CP="CAO PSA OUR"');現在一切正常!

編輯

甚至更​​多的研究後,這個問題是不是特定於Facebook的,只是I幀。它與第三方cookie以及Internet Explorer(和Safari)如何處理它們有關。我想要注意的是,標題代碼適用於IE,但不適用於Safari。

+0

非常感謝你! – 2012-09-10 10:23:16

1

我遇到了同樣的問題。 PHP會話不是堅持IE8,但他們在所有其他瀏覽器(Chrome,Firefox,Opera,Safari)中。沒有工作。我嘗試了一切,從正確的標題與P3P指令,cookie操作,重置會話ID的,設置cookie將在未來的方式,等等,等等等等。

這裏是最後的工作(我不知道爲什麼它的工作原理),但這是罪魁禍首...

經過調試的日子裏,我發現我的劇本有一個圖像標記,有一個壞的src參考它,像這樣:

<img src=""> 

換句話說,src引用是空白/空白。這是對我的全部問題的忠告。我不知道爲什麼,但投入實際圖像位置這樣的後:

<img src="./images/myimage.gif"> 

修正空SRC引用後,一切運行良好和PHP會議設定,即使在IE8正常。相信與否,這是PHP會話未被設置的原因。

我仍然不知道,但它在此之後正常工作。我將不得不研究爲什麼這會導致這樣的問題。如果有人知道爲什麼,請張貼答案。

我希望這可以幫助別人。 :-)