0

如您所见,虽然我们在 facebook 中有 5 个打开的选项卡,但一旦我们在其中一个“注销”然后转到另一个选项卡,它会检测到我们已注销并通知我们并将用户重定向到登录页面。这是如何工作的?我想用 PHP/jQuery 为我的网络应用程序做这样的事情。我只是需要一个提示...

提前致谢

4

4 回答 4

3

Facebook uses Comet technology on their pages. Every page holds an open HTTP request. As soon as something changes (e.g. "incoming chat message" or in your case "user logged out", this information will be pushed to the clients.

If you're using NGINX as your webserver, I'd suggest to have a look at the nginx_http_push_module

于 2012-10-02T08:23:59.527 回答
3

以与任何其他应用程序相同的方式:当您注销时,服务器要么从客户端删除 cookie,要么更改其值以指示“注销”状态。当稍后发出新请求时,服务器会在 cookie 中检测到此状态,并为已注销的用户返回适当的内容。

Facebook 使用 AJAX 来做到这一点,但这并没有改变情况。如果您使用浏览器的开发人员工具监视 Facebook 的 AJAX 请求,您将能够看到所有血淋淋的细节。

于 2012-10-02T08:15:57.980 回答
1

它绝对使用Ajax请求,它以异步方式联系 Web 服务器(不刷新页面)。

使用 JQuery 库处理 Ajax 请求非常简单:链接到 API

于 2012-10-02T08:14:16.010 回答
0

最简单的方法之一是使用 Session 变量来控制用户是否登录。当您点击注销时,它会将该变量设置为 false。

Facebook 将有一个脚本定期调用服务器端脚本的某种 ajax 调用来检查会话是否仍然有效。一旦它无效,ajax 调用将导致弹出窗口出现。

于 2012-10-02T08:17:07.367 回答