过去一天半我一直在研究一个问题,但仍未找到解决方案。
当在 facebook(在 facebook 的 iFrame 中)访问我的游戏时,php session 不起作用。这适用于 IE 和 Safari。 Chrome 运行良好。
我已经阅读了有关此问题的堆栈上的所有帖子,这似乎归结于第三方 cookie 安全性并且需要首先与 iFrame 进行交互。有一个解决方法是让 javascript 首先将一些表单数据发布到 iFrame,但这似乎最近在最新版本的浏览器中已经“修复”,因为它不再有效。
我什至尝试实现一个开始页面,要求他们首先单击一个链接(在 iFrame 中)以加载另一个页面,然后创建 session 。但即使这样也行不通。
我什至在使用 javascript 的 iFrame 中加载新页面时也遇到了问题,这似乎总是导致无限循环刷新。
不,P3P header 不能解决它。
有没有人能解决这个问题?考虑到有多少 Facebook 应用程序存在,我不可能是唯一一个使用它的人!
最佳答案
我在使用禁用了“接受第三方 cookie”的客户端时遇到了这个问题。我的解决方案是通过将此行放在每个页面的开头来强制 PHP 将 session ID 嵌入到 URI 中:
ini_set('session.use_trans_sid', true);
由于 URL 在 Facebook 的 iframe 中,因此在顶部窗口中看不到 SID。
关于Facebook iFrame Canvas 应用程序 PHP session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105168/