【问题标题】:Detect new $_SESSION variable without refresh. Maybe AJAX?检测新的 $_SESSION 变量而不刷新。也许是 AJAX?
【发布时间】:2010-12-23 04:07:20
【问题描述】:

我目前正在构建一个网站,该网站可以获取 youtube 视频和 flickr 图片,并允许用户在网站上对其发表评论。在拥有自己的评论系统的同时,该网站还可以选择使用 youtube/flickr 登录,以使用他们的用户名在 youtube 或 flickr 上发表评论。

我这样做是通过打开一个弹出窗口(真正的弹出窗口,而不是 jquery 类型的弹出窗口),在他们登录后关闭弹出窗口并将他们的令牌存储在 PHP $_SESSION 中。问题是,我有很多关于 jQuery 的事情,我想让他们在不刷新的情况下登录后在作为网站访问者评论和评论 Flickr/YouTube 之间切换。

基本上,我需要一种方法来检测弹出窗口何时关闭,这样我就可以向 PHP 文件发出请求,该文件会告诉我用户是否在 $_SESSION 中保存了令牌并隐藏评论表单中的姓名和电子邮件框,因为它们只需要输入框。

另一种方法是在他们打开弹出窗口时触发 setInterval(),例如每 2/3 秒检查一次 $_SESSION,但我认为这不是最好的方法。理想情况下,我希望用户关闭弹出窗口后立即起作用的东西。

更多详情: 我正在使用http://swip.codylindley.com/popupWindowDemo.html 来显示弹出窗口 两个函数的回调脚本在将令牌存储在 $_SESSION 之后执行 self.close() 用户可以同时使用 Flickr 和 Youtube 登录(但我认为这不再重要了)。 作为访问者发表评论与 Flickr/Youtube 用户之间的区别在于,作为访问者,您拥有三个字段(姓名、电子邮件、消息),而在其他情况下只有一个字段(消息) 我会检查页面何时加载,因此如果用户此时刷新页面,一切正常,但我希望他不必这样做,或者至少它会自动刷新。

最后,我很乐意使用其他选项,只要用户不必离开页面,刷新自己即可在访问者和登录用户之间切换。在页面中使用 jQuery,所以如果它是基于 jQuery 的解决方案,那就更好了。

抱歉,帖子太长了,找不到缩短它的方法。

感谢大家的帮助!

编辑

setInterval() 带有一个调用 PHP 脚本来检查 $_SESSION 变量的函数,就像一个魅力,在性能或用户体验方面并没有我预期的那么糟糕。不过,如果有人能想到更好的解决方案,我愿意接受。

谢谢!

【问题讨论】:

  • 我浏览了您的评论,但使用 ajax 来检查 cookie 集是可能的并且可以完成。我在使用间隔之前已经完成了。
  • 我认为这是可能的,但我更愿意在用户关闭弹出窗口时这样做,而不是经常这样做。当用户期望时立即更改表单非常重要,否则可能会被误解为错误行为,我猜......
  • @Glycerine 我尝试以 setInterval 方式进行操作,效果很好。感谢您证实我的理论,我想我只是懒得做测试才问。
  • 没问题,伙计。我们都去过那里 - 这是可能有灰色区域并迫使您将头发拉出几个小时的事情之一。
  • @Glycerine 是的,我也处于倦怠期的尾声,所以我想的很慢,但是 youtube/flickr 的结果很好,网站会发布一个链接上线:)

标签: php jquery ajax session popup


【解决方案1】:

您可以在弹出窗口中放置 HTML 代码:

<body onunload="window.opener.location.href = 'http://check.session.com/path/to/file.php'">

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2017-02-16
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多