2010-11-06 32 views
5

Tôi có ứng dụng Facebook iFrame (viết bằng PHP) và khi tôi chạy nó trong IE8, dữ liệu phiên của tôi không được duy trì.Facebook/IE8 - Phiên không được lưu giữ

Tôi đang sử dụng Symfony 1.4 và đã thử cả trình bao bọc phiên của Symfony và $ _SESSION.

Tôi thiết lập hai trang thử nghiệm: trang đầu tiên xác định $_SESSION['foo'] = 'bar' và gọi print_r($_SESSION). Trang thứ hai cũng gọi số print_r($_SESSION). Tôi thấy các biến phiên của tôi được đặt trên trang đầu tiên, nhưng không được đặt trên trang thứ hai.

Mọi thứ hoạt động tốt trong Firefox và Chrome và tôi đã có hai người khác kiểm tra điều này trên các máy tính khác nhau chạy IE8 và chúng có cùng vấn đề.

Tôi đã thử xóa bất kỳ javascript Facebook nào khỏi trang của mình nghĩ rằng nó có thể bằng cách nào đó đang can thiệp, nhưng điều đó không giải quyết được gì.

Bất kỳ trợ giúp nào sẽ được đánh giá cao, cảm ơn!

+0

bản sao có thể có của [Cách xử lý đúng mã thông báo phiên và truy cập bằng Facebook PHP SDK 3.0?] (Http://facebook.stackoverflow.com/questions/6468103/how-to-properly-handle-session- và-access-token-với-facebook-php-sdk-3-0) – rjmunro

Trả lời

23

Sau một số nghiên cứu thêm, đây là vấn đề cụ thể với ứng dụng khung nội tuyến Facebook và Internet Explorer. May mắn thay, giải pháp rất đơn giản, tôi chỉ cần thêm mã này header('P3P: CP="CAO PSA OUR"'); Mọi thứ hoạt động tốt ngay bây giờ!

Sửa

Sau khi nghiên cứu hơn nữa, vấn đề này là không cụ thể cho Facebook, chỉ iframe. Nó có liên quan đến cookie của bên thứ ba và cách Internet Explorer (và Safari) xử lý chúng. Tôi muốn lưu ý rằng mã tiêu đề hoạt động cho IE, nhưng không phải là Safari.

+0

Cảm ơn bạn rất nhiều! –

1

Tôi đã gặp sự cố tương tự này. Các phiên PHP không bền bỉ IE8, nhưng chúng nằm trong mọi trình duyệt khác (Chrome, Firefox, Opera, Safari). Không có gì hiệu quả. Tôi đã thử mọi thứ từ các tiêu đề phù hợp với chỉ thị P3P, thao tác cookie, đặt lại id phiên, thiết lập cookie để hết hạn trong tương lai, blah, blah, blah.

Đây là những gì cuối cùng làm việc (và tôi không biết tại sao nó hoạt động), nhưng đây là thủ phạm ...

Sau nhiều ngày gỡ lỗi, tôi thấy rằng kịch bản của tôi đã có một thẻ hình ảnh đó đã có một tham chiếu src xấu trong đó, như sau:

<img src=""> 

Nói cách khác, tham chiếu src trống/trống. NÀY LÀ CULPRIT TO VẤN ĐỀ WHOLE CỦA TÔI. Tôi không biết tại sao, nhưng sau khi đặt vào một vị trí hình ảnh thực tế như thế này:

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

Sau khi sửa tham chiếu src trống, mọi thứ hoạt động tốt và phiên PHP đã được đặt đúng ngay cả trong IE8. Tin hay không, đây là lý do đằng sau phiên PHP không được thiết lập.

Tôi vẫn không có ý tưởng nhưng nó hoạt động tốt sau này. Tôi sẽ phải nghiên cứu lý do tại sao điều này sẽ gây ra một vấn đề như thế này. Nếu có ai biết tại sao, hãy đăng câu trả lời.

Tôi hy vọng điều này sẽ giúp ai đó. :-)

Các vấn đề liên quan