development

php-Location : header를 호출 한 후 exit ()를 호출해야합니까?

big-blog 2020. 11. 7. 10:49
반응형

php-Location : header를 호출 한 후 exit ()를 호출해야합니까?


리디렉션 함수 헤더를 호출 한 후 exit를 호출해야합니까?

<?php // fileA
$urlFailToGoTo = '/formerror.php';

if (sth)
{
   header(sprintf("Location: %s", $urlFailToGoTo));
   exit(); //should I call exit() here? or return?
}

?>

감사합니다


당신은 확실히해야합니다. 그렇지 않으면 스크립트 실행이 종료되지 않습니다. 다른 헤더 만 설정하는 것만으로는 리디렉션 할 수 없습니다.


@rgroli가 설명하는 것처럼해야합니다. 대괄호를 사용하지 않으려면 header() IN 을 호출 할 수도 있습니다 exit().

if(sth) exit(header("Location: http://example.com"));

HTTP / 1.1의 위치 헤더에는 항상 절대 경로가 필요합니다 . 여기에있는 참고 사항을 참조하십시오 .

참고 : 종료 코드 는 매개 변수가 정수인 경우에만 사용되는 반면 header()void (코드 = 0, 정상 종료로 종료) 생성하기 때문에 이것은 해킹이 아닙니다 . 헤더 exit_header()뒤에 있어야 하는 것처럼 함수 로보십시오 Location.


브라우저는 새 페이지로 리디렉션되어야하므로 현재 스크립트의 추가 실행은 일반적으로 바람직하지 않기 때문에 헤더를 보낸 후에 exit;일반적으로 (주-키워드이므로 필요하지 않습니다 ())하는 Location:것이 좋습니다.


헤더 아래에 코드 (PHP 또는 HTML)가 없다면 그럴 필요가 없습니다.


종료는 잘못된 코딩입니다.

큰 프로젝트를 개발하고 PHP 단위 테스트 케이스를 만들고 싶다면 exit가 당신을 망칠 것입니다.

exit는 스크립트와 실행중인 테스트를 종료합니다! 테스트를 복구하고 실패 여부를 알 수있는 방법이 없습니다.

리디렉션을 사용하면 출력이없고 스크립트가 자연스럽게 종료되도록 코드를 구성합니다.

참고 URL : https://stackoverflow.com/questions/3553698/php-should-i-call-exit-after-calling-location-header

반응형