302를 무시하면 redirect()
은 출력을 중지하지만 header()
은 표시되지 않습니다. redirect()
은 header()
을 사용하여 302 응답을 설정합니다. 다른 행동, 동일한 기능. 뭐라 구요?동일한 리디렉션 기능이 다른 동작을하는 이유
일부 컨텍스트 : CodeIgniter를 사용하여 사이트를 구축하고 있으며 사이트에서 게스트 및 멤버를 처리하는 방법을 알고 있습니다. 이제 컨트롤러
class MY_Controller extends CI_Controller {
if (! $authenticated) redirect('/login');
}
:
class Members_only extends MY_Controller {
function index()
{
// Display members only content
}
}
그럼 내가 생각, 앨리스 (인증되지 않은 방문자가) 302 응답을 무시하면 무엇을 CI 코어를 확장
? 리디렉션 후에 나머지 콘텐츠를 볼 수 있습니까? 그래서 나는 그것을 시험했고, 지금 나는 완전히 혼란 스럽다. 302 리디렉션을 보낼 수있는 두 가지 기능이 있습니다.
header('Location: http://mywebsite.com/login', TRUE, 302);
그리고 CI의 URL 도우미에서
:site_url()
function redirect($uri = '', $method = 'location', $http_response_code = 302)
{
if (! preg_match('#^https?://#i', $uri))
{
$uri = site_url($uri);
}
switch($method)
{
case 'refresh' : header("Refresh:0;url=".$uri);
break;
default : header("Location: ".$uri, TRUE, $http_response_code);
break;
}
exit;
}
은 "반환 http://mywebsite.com/login : 여기
redirect('/login');
는 내부에서 모습입니다 ".
누군가 내가 여기에서 놓친 것을 지적 할 수 있습니까?
나는 내 자신의 질문에도 너무 대답하고 있었다. 어떻게 내가 그 출구를 놓쳤는지, 나는 모른다 ... – Rob
우리 중 최고에 일어난다 :) –