25.9K
논의
당신의 웹 서버는 PHP에 의해 처리되어 대부분 페이지에서 HTTP 상태코드 200 (성공)을 반환합니다. 그러나 당신은 광범위한 상태 코드들, 또는 응답 코드들을 사용해야 할 수도 있습니다.
인기 있는 몇 가지 코드는 스스로 방법을 얻을 수 있습니다. 다른 페이지로 넘겨질 때, 당신은 302 (임시 이동) 상태코드를 전송하기를 원합니다. 그것은 “다른 위치로 넘겨주기“로 덮어집니다. 사용자가 페이지를 보는 것을 허가받지 못했다면, 당신은 401 (권한 없음)을 전송합니다.
하지만 항상 조건부 GET 방식에 의하여 304 (수정되지 않음)이 전송됩니다. 이것은 누군가가 당신의 사이트를 폴링하고 새로 개선할 것이 없다고 알려주는데 사용될 수 있습니다.
또는 악명 높은 404 (찾을 수 없음)는 페이지가 존재하지 않을 때 전송됩니다. 보통 이것은 당신의 웹서버에서 처리됩니다. 하지만 당신이 데이터베이스 안의 정보에 근거하여 URL과 응답을 처리하는 경우를 제외한, 당신이 디스크에서 물리적으로 파일이 저장되지 않은 곳에 동적 URL이 지원되길 원한다면, 그러면 당신은 누군가 인식 불가능한 URL을 불러올 때 이것을 스스로 처리해야할 필요가 있습니다.
워드프레스는 카테고리나 날짜(예, /category/php/ or /2014/11/03/)에 근거한 URL에 응답하는 매우 좋은 예입니다. 이런 경우에 누군가 카테고리나 포스트에 새로운 데이터를 추가할 때마다 워드프레스는 패턴에 맞는 URL의 요청, 심지어 실제로 파일이 위치하지 않더라도 자동으로 응답 할 수 있습니다.
http_response_code() 때문에 당신은 상태 코드 번호를 제공하고, PHP는 상태 표시줄을 올바르게 처리합니다. 204 (콘텐츠 없음)을 포함한 일부 상태 코드들은 HTTP 명세상에서 메시지 바디를 제공하면 안 됩니다. 이런 경우에 exit()를 전송하여 스크립트를 즉시 중단하는 것이 최선입니다.
만약 당신이 PHP 5.3에서 막혀있다면, header( )를 사용하고 세 번째 파라미터에 상태 코드를 사용하는 것을 건너뛰세요.참고
HTTP 1.1 사양의 상태 코드 설명서 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
2. 다른 위치로 넘겨주기
문제
당신은 사용자에게 자동으로 새로운 URL을 보내길 원합니다. 예를 들어, 폼 데이터를 성공적으로 저장한 뒤 당신은 유저에게 데이터가 저장되었는지 확인하는 페이지로 넘겨주길 원합니다.
해결
어떤 결과가 출력되기 전에 header()를 사용하여 위치 헤더와 함께 새로운 URL을 보낸 뒤, exit()를 불러오면 아무것도 출력되지 않습니다.논의
예제 1-1에서 새 페이지로 변수를 전달하려면, URL 문자열 쿼리가 포함되어 있어야 합니다.
[예제 1-1] 문자열 변수를 넘겨주기넘겨주는 URL은 반드시 프로토콜과 호스트이름이 포함되어있어야 합니다. 단지 경로이름만으로는 할 수 없습니다. 예제 1-2는 좋은 경로 헤더와 나쁜 경로 헤더를 보여줍니다.
[예제 1-2] 좋은 그리고 나쁜 경로 헤더GET 방식으로 검색된 사용자를 넘겨주는 URL입니다. 당신은 POST 방식을 통해 검색된 사용자를 넘겨줄 수 없습니다. 만일 자바스크립트가 있다면, 당신은 자동적으로 제출받은 폼에 의하여 생성된 POST 방식을 경유하는 것처럼 보이게 할 수 있습니다. 자바스크립트를 사용하는 브라우저가 예제 1-3에 있는 페이지를 받으면, 그것은 즉시 POST 방식으로 폼에 포함될 것입니다.
[예제 1-3] 전송된 폼을 통하여 넘겨주기html