【问题标题】:Why is this HTTP request continually looping?为什么这个 HTTP 请求不断循环?
【发布时间】:2010-03-15 13:52:03
【问题描述】:

我可能在这里忽略了一些非常明显的东西。

评论有助于解释任何库特定的代码。

public function areCookiesEnabled() {

        $random = 'cx67ds';

        // set cookie
        cookie::set('test_cookie', $random);

        // try and get cookie, if not set to false
        $testCookie = cookie::get('test_cookie', false);


        $cookiesAppend = '?cookies=false';

        // were we able to get the cookie equal ?
        $cookiesEnabled = ($testCookie === $random);

        // if $_GET['cookies'] === false , etc try and remove $_GET portion
        if ($this->input->get('cookies', false) === 'false' AND $cookiesEnabled) {
          url::redirect(str_replace($cookiesAppend, '', url::current())); // redirect 
          return false;
        }

        // all else fails, add a $_GET[]
        if ( ! $cookiesEnabled) {

          url::redirect(url::current().$cookiesAppend);
        }

        return $cookiesEnabled;

    }

首先,我想要一种简单的方法来检查是否启用了 cookie。我实现了这一点,但如果没有 cookie,URL 中有一个丑陋的?cookies=false

没关系,但是如果您重新加载页面并且确实再次启用了 cookie,我想重定向用户,因此它在 URL 中删除了?cookies=false(允许该方法现在重新检查并了解 cookie 启用。)。

【问题讨论】:

    标签: php session cookies kohana kohana-3


    【解决方案1】:

    $cookiesEnabled = ($testCookie === $random);之后有4种情况:

    1. $cookiesEnabled 为真,$_GET['cookies'] === 'false' 为真
    2. $cookiesEnabled 为真,$_GET['cookies'] === 'false' 为假
    3. $cookiesEnabled 为假,$_GET['cookies'] === 'false' 为真
    4. $cookiesEnabled 是假的,$_GET['cookies'] === 'false' 是假的

    案例 1 由第一个 if 块处理。 return 语句旨在处理情况 2 和 3;第二个 if 块旨在仅处理案例 4,但它同时捕获案例 3 和 4。在案例 3 中,URL 已经有 ?cookies=false,但由于 $cookiesEnabled 为假,我们重定向到添加 ?cookies=false ,然后循环回到案例 3。

    【讨论】:

      【解决方案2】:

      你一定是遗漏了一些东西,因为代码中没有循环。如果您的意思是 浏览器 正在循环(例如,获得连续重定向),那么我建议将 Live HTTP Headers 扩展安装到 Firefox 并观察浏览器和服务器实际上是在说什么。在上面的 sn-p 中放入一些日志记录代码也可能具有指导意义。

      评论更新:

      然后我真的建议在ifs 中放入打印语句,这样您就可以看到您正在经历哪些以及各种值是什么。显然某事并没有按照你想象的方式设置,所以现在你需要找出它实际上是什么。

      我多次遇到的一件事是代码本身没问题,但是有一个 .htaccess 文件对您不利,因此请仔细检查任何目录中的任何 .htaccess 文件,从 DOCUMENT_ROOT 开始。

      【讨论】:

      • 对不起,我就是这个意思。我确实有 Live HTTP Headers,但我不确定我应该改变什么来让它停止。似乎它正在请求,并且每次都被重新重定向(当 cookie 被禁用时)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2018-03-02
      • 1970-01-01
      • 2018-04-15
      • 2023-03-18
      相关资源
      最近更新 更多