Php 为什么这个HTTP请求不断循环?

Php 为什么这个HTTP请求不断循环?,php,session,cookies,kohana,kohana-3,Php,Session,Cookies,Kohana,Kohana 3,我可能忽略了一些非常明显的事情 注释用于帮助解释任何特定于库的代码 public function areCookiesEnabled() { $random = 'cx67ds'; // set cookie cookie::set('test_cookie', $random); // try and get cookie, if not set to false $testCookie = cookie:

我可能忽略了一些非常明显的事情

注释用于帮助解释任何特定于库的代码

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;

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


这是可以的,但是如果你重新加载了页面并且再次启用了cookies,我想重定向用户,这样它就去掉了URL中的
?cookies=false
(允许该方法重新检查并了解cookies现在已启用。)。

由于该代码中没有循环,你必须省略一些内容。如果您的意思是浏览器正在循环(例如获得连续重定向),那么我建议将扩展安装到Firefox,并观察浏览器和服务器之间的实际对话。在上面的代码段中插入一些日志代码也可能会有帮助

更新评论:

然后我真的建议在
if
s中放入print语句,这样您就可以看到您正在使用哪些语句以及各种值。很明显,有些事情并没有按照你想象的方式进行设置,所以现在你需要找出它实际上是什么


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

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

  • $cookiesEnabled
    为真,
    $\u GET['cookies']=='false'
    为真
  • $cookiesEnabled
    为真,
    $\u GET['cookies']=='false'
    为假
  • $cookiesEnabled
    为false,而
    $\u GET['cookies']=='false'
    为true
  • $cookiesEnabled
    为false,而
    $\u GET['cookies']=='false'
    为false

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

    对不起,这就是我的意思。我确实有实时HTTP头,但我不确定应该更改什么以使其停止。它似乎在请求,并且每次都被再次重定向(当cookies被禁用时)。