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
'development' 카테고리의 다른 글
"이중 사용 가능 또는 손상"오류를 추적하는 방법 (0) | 2020.11.07 |
---|---|
foldl은 꼬리 재귀 적이므로 foldr이 foldl보다 빠르게 실행되는 이유는 무엇입니까? (0) | 2020.11.07 |
문자열을 IP 주소로 또는 그 반대로 변환하는 방법 (0) | 2020.11.07 |
Chrome의 HTML 5 지리적 위치 프롬프트 (0) | 2020.11.07 |
CSS에서 제목 속성 추가 (0) | 2020.11.07 |