복붙노트

PHP는 - 내가 Location () 헤더를 호출 한 후 exit ()를 호출해야합니까?

PHP

PHP는 - 내가 Location () 헤더를 호출 한 후 exit ()를 호출해야합니까?

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

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

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

?>

고맙습니다

해결법

  1. ==============================

    1.당신은 분명히해야합니다. 그렇지 않으면 스크립트 실행이 종료되지 않습니다. 다른 헤더 만 설정하면 리디렉션하기에 충분하지 않습니다.

    당신은 분명히해야합니다. 그렇지 않으면 스크립트 실행이 종료되지 않습니다. 다른 헤더 만 설정하면 리디렉션하기에 충분하지 않습니다.

  2. ==============================

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

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

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

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

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

  3. ==============================

    3.일반적으로 종료하는 것이 좋습니다. (참고 - 키워드이므로 브라우저가 새 페이지로 리디렉션되기 때문에 Location : 헤더를 보낸 후 ()가 필요하지 않으므로 현재 스크립트를 더 이상 실행하지 않는 것이 일반적입니다.

    일반적으로 종료하는 것이 좋습니다. (참고 - 키워드이므로 브라우저가 새 페이지로 리디렉션되기 때문에 Location : 헤더를 보낸 후 ()가 필요하지 않으므로 현재 스크립트를 더 이상 실행하지 않는 것이 일반적입니다.

  4. ==============================

    4.헤더 아래에 코드 (PHP 또는 HTML)가없는 경우에는 필요하지 않습니다.

    헤더 아래에 코드 (PHP 또는 HTML)가없는 경우에는 필요하지 않습니다.

  5. ==============================

    5.exit는 잘못된 코딩입니다.

    exit는 잘못된 코딩입니다.

    큰 프로젝트를 개발하고 PHPUnit Test Cases를 만들고 싶다면 종료하면 문제가 발생할 수 있습니다.

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

    리디렉션을 사용하면 출력이없고 스크립트가 자연스럽게 끝나는 방식으로 코드를 구성하십시오.

  6. from https://stackoverflow.com/questions/3553698/php-should-i-call-exit-after-calling-location-header by cc-by-sa and MIT license