이 HTTP 요청이 지속적으로 반복되는 이유는 무엇입니까?
문제
나는 아마도 여기서 정말 명백한 것을 간과하고있을 것입니다.
도서관 특정 코드를 설명하는 데 도움이되는 의견이 있습니다.
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=false
URL에서.
괜찮 았지만 페이지를 다시로드하고 쿠키를 다시 활성화 한 경우 사용자를 리디렉션하여 제거하고 싶었습니다. ?cookies=false
URL에서 (메소드가 지금 쿠키를 다시 확인하고 배울 수 있도록 허용 ~이다 활성화.).
해결책
후에 $cookiesEnabled = ($testCookie === $random);
, 4 가지 사례가 있습니다.
$cookiesEnabled
사실입니다$_GET['cookies'] === 'false'
사실이다$cookiesEnabled
사실입니다$_GET['cookies'] === 'false'
거짓입니다$cookiesEnabled
거짓이고$_GET['cookies'] === 'false'
사실이다$cookiesEnabled
거짓이고$_GET['cookies'] === 'false'
거짓입니다
사례 1은 첫 번째로 처리됩니다 if
차단하다. 그만큼 return
진술은 사건 2와 3을 처리하기위한 것입니다. 두번째 if
블록은 사례 4 만 처리하기위한 것이지만 사례 3과 4를 모두 포착합니다. ?cookies=false
, 하지만 그때부터 $cookiesEnabled
거짓, 우리는 추가하도록 리디렉션합니다 ?cookies=false
, 그리고 사례 3으로 다시 순환합니다.
다른 팁
당신은 거기에서 무언가를 남겨두고 있어야합니다 ~이다 해당 코드에 루프가 없습니다. 당신이 그 의미가 있다면 브라우저 루핑 (예 : 연속 리디렉션을 얻는 것), 그런 다음 설치하는 것이 좋습니다. 라이브 HTTP 헤더 Firefox로 확장하고 브라우저와 서버가 실제로 서로의 말을보십시오. 위의 스 니펫에 일부 로깅 코드를 넣는 것도 유익 할 수 있습니다.
댓글 업데이트 :
그런 다음 내부에 인쇄문을 넣는 것이 좋습니다. if
S를 겪고있는 것과 다양한 값이 무엇인지 알 수 있습니다. 분명히 무엇 당신이 생각했던 방식을 설정하지 않으므로 이제는 실제로 무엇인지 알아 내야합니다.
내가 여러 번 만난 한 가지는 코드 자체가 정상이지만, 귀하를 상대로 작동하는 .htaccess 파일이 있으므로 Document_Root에서 시작하여 모든 디렉토리에서 .htaccess 파일을 두 번 확인하십시오.