【问题标题】:Why is my Drupal site logging out users when a Javascript function is called?为什么我的 Drupal 站点在调用 Javascript 函数时会注销用户?
【发布时间】:2008-09-23 00:23:30
【问题描述】:

我有一个 Drupal 5 站点,单击一个按钮并调用一个 JavaScript 函数。该函数基本上构建一个字符串,然后重定向到我们网站上的另一个页面。单击按钮后,有时用户会退出并看到“拒绝访问”屏幕,即使他们之前已登录。他们被重定向的页面与前一个页面具有相同的访问限制,但不管怎样,他们不应该被注销。

一个用户大约有一半的时间会发生这种情况(另一半会正常工作),而另一个用户报告说在单击该按钮时总是被注销。但是,我总是能够在我使用的机器上顺利运行它,我怀疑它与使用 IE6 的机器有关。以前有没有人遇到过这个问题,或者对可能导致此问题的原因有任何想法?我在Drupal论坛上搜索发帖,在这个论坛里搜索过,还没有运气。

【问题讨论】:

  • 从“drupal 5”重新标记为 drupal。 5 不是最好的标签:)

标签: javascript drupal


【解决方案1】:

想到很多事情。

  • 页面是否被重定向到同一个域?就 cookie 而言,domain.com 和 www.domain.com 并不相同(取决于它们的设置方式)..
  • 您能否在任何浏览器中 100% 可靠地重现它?不会冒犯您的用户,但用户是骗子(或至少不擅长报告技术错误)。我不会相信用户告诉我的事实(“哦,好吧,是的,我在两次尝试之间关闭了浏览器。但这不重要。”)。
  • 服务器上是否有东西正在清除会话,或者会话过期限制设置的太低?

道德:先去尝试重现问题,这样你就可以准确地缩小问题的范围。我建议使用 Firebug + Firecookie 来调试 Firefox 和一般 cookie 问题,使用 Fiddler2(代理)来调试 IE。

【讨论】:

  • 一半时间发生在一个用户身上的事实(假设他们使用相同的设置)让我认为这也是会话超时。加载页面,然后在喝完咖啡后返回并点击按钮。检查 php.ini 以更改超时
  • 这是修复它的第一个要点。它以前是硬编码的,一旦我将它更改为 window.location.host,它现在就可以按预期工作了。谢谢gregmac!
【解决方案2】:

老实说,我认为最好的方法是发布导致此问题的代码。

Drupal 使用 PHP 会话来执行此操作,它使用 cookie...是否有任何用户关闭了 cookie?

有很多事情可能导致这种情况,重定向到不同的域,清除会话(/tmp cleanup?),但通常,我会把这样的事情放到浏览器中。

询问他们是否仍然可以使用其他浏览器进行复制(尝试 firefox)...检查他们的 cookie 安全设置,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2018-09-22
    • 2014-04-16
    • 2018-09-03
    • 2016-12-27
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多