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被禁用时)。