当用户关闭其浏览器窗口时,Facebook PHP页面选项卡应用程序-$\u会话无法维持

当用户关闭其浏览器窗口时,Facebook PHP页面选项卡应用程序-$\u会话无法维持,php,facebook,session,facebook-php-sdk,Php,Facebook,Session,Facebook Php Sdk,我有一个页面标签的应用程序,这是一个类似门比赛 用户喜欢一个页面,提供他们的电子邮件地址并点击submit进入竞赛 输入后,我设置了一个会话变量$_session['entered']='1';或者类似的东西 一旦他们进入,我会在页面上显示更多信息(html)并删除电子邮件表单 问题:如果用户停留在页面上,刷新页面一百万次(在同一浏览器窗口中),会话变量将停留,我可以判断用户输入并显示正确的信息。 如果用户关闭窗口,稍后会在新窗口中返回,等等。我会丢失会话信息,并且用户会再次收到输入表单(尽管他

我有一个页面标签的应用程序,这是一个类似门比赛

用户喜欢一个页面,提供他们的电子邮件地址并点击submit进入竞赛

输入后,我设置了一个会话变量$_session['entered']='1';或者类似的东西

一旦他们进入,我会在页面上显示更多信息(html)并删除电子邮件表单

问题:如果用户停留在页面上,刷新页面一百万次(在同一浏览器窗口中),会话变量将停留,我可以判断用户输入并显示正确的信息。

如果用户关闭窗口,稍后会在新窗口中返回,等等。我会丢失会话信息,并且用户会再次收到输入表单(尽管他们已经参加了比赛)


如果页面应用程序中的用户离开或回来,我如何为他们维持会话?

会话在关闭时会被浏览器破坏-任何代码都不会改变浏览器处理该会话的方式。您可以尝试使用cookie,或者尝试将会话保存到他们的IP/useragent(但出于安全考虑,不建议这样做),并在他们回来时重新建立会话。

您可以使用cookie。会话将在退出浏览器时关闭,但Cookie将一直持续到其过期日期


你也可以设置他们必须登录,在他们的用户中,你可以设置他们是否参加了比赛,并相应地调整页面。(只是一个想法…

如果用户关闭浏览器,会话将被销毁。我也不会在你这边用饼干。如果用户已经输入表单,我建议您获取用户uid并检查您的数据库,并在获得此信息后显示正确的页面

这可能是一种比会话或cookie更安全、更一致的方法


问候

这是facebook的事吗?在PHP中,关闭浏览器窗口不会破坏会话。cookie也不会粘住,我相信这是由于iframe。以前有人解开过这个谜团吗?会话不是被php破坏的,在这个例子中是被浏览器破坏的。facebook设置了一个连接到会话的cookie,因此,尽管用户数据不存储在客户端,但允许用户撤回会话的令牌存储在客户端的cookie中。没有这个cookie,facebook会话也会丢失。这是实现所需功能的类型。不幸的是,cookie也无法坚持。我相信这是由于iframe。您是否尝试将cookie的域设置为整个网站域。我遇到了这样的问题,但如果你改变了域名,它会允许你访问它们。这个例子在我的答案中的php链接中。例如:
setcookie(“TestCookie”,“$value,time()+3600”,“/”,“example.com”,1)
将在www.example.comHi Jake下的每个页面中提供,感谢您的帮助,我将setcookie放在错误的位置(在输出之前),这导致cookie未设置。你继续写答案帮助我摆脱了愚蠢。使用cookie应该是有效的——永远不知道facebook在iframe代理中做了什么,我以为他们在清除cookie,而我的cookie不起作用。再次感谢您的帮助我觉得我只需要为用户保留一段数据,但我在为用户签名的请求中没有得到任何东西。