2012-03-06 4 views
0

기본적으로, 나는 wordpress plugin을 쓰고있다. 플러그인이 수행하는 첫 번째 기능은 HTTP 응답 코드와 헤더가 전송되도록 예약되었는지 (전송하기 전에) 식별하는 것입니다.어떤 HTTP 응답 코드와 헤더를 보내기 전에 보내야하는지 알고있는 방법

http 상태 코드를 기반으로하면 연결을 설정하고 다른 것을 기반으로 HTTP 응답을 수정할 수 있습니다.

이것은 내가 작성한 첫 번째 플러그인이며 내 경험을 짐작할 수 있습니다. 플러그인 작성의 기본 사항은 여전히 ​​있습니다.

답변

2

headers_list()http_response_code()을 참조하십시오.

http_response_code()은 신규이며 PHP 버전에서 사용 가능하지 않을 수 있습니다. 그것을 발견 할 수있는 다른 방법은 없습니다. 죄송합니다. 하지만 직접 변경하지 않은 경우 상태 코드는 항상 "200 OK"여야합니다.

/* get headers and HTTP status code (which should be always 200, 
    if you didn't change it before calling this code) */ 

if (!headers_sent()) { 
    $headers = headers_list(); 
    $status = http_response_code(); 
    // change if necessary 
} 
else { 
    // oh noes, cannot change headers anymore 
} 
2

headers_list 함수는 보내거나 보내려는 모든 헤더의 목록을 제공합니다. headers_sent 함수를 사용하여 이미 전송했는지 확인할 수는 있지만 전송되기 전에이를 가로 채기 위해 사용할 수 있다고는 생각하지 않습니다. 나는 그것에 대해 잘못 될 수 있습니다 - 그것은 출력 버퍼링으로 가능할 수도 있지만, 나는 그것에 대해 조사한 적이 없습니다.

+0

안녕하세요 James! 답장을 보내 주셔서 감사합니다. 방금 headers_list()를 확인했습니다. 다음을 반환했습니다. 배열 ( [0] => X-Powered-By : PHP/5.3.5 [1] => X-Pingback : http://mysite.com/xmlrpc.php [2] => Content-Type : text/html; charset = UTF-8 ) HTTP 상태 코드가 없습니다. HTTP 상태 코드가 필요합니다 ... –

2

당신은 당신의 논리에 따라 헤더가 첫 번째로 전송되지 않습니다 있는지 확인하고 두 번째에 의해 제공되는 결과를 반복, 조합 headers_sent()와 headers_list()를 사용하고이를 변경해야

+0

답장을 보내 주셔서 감사합니다 ... 당신 말이 맞지만, headers_list()는 HTTP 상태 코드를 제공하지 않습니다. –

+0

@ahmedtabrez HTTP 상태 코드 *는 실제로는 헤더가 아닙니다 – Kaii

+0

그러면 HTTP 상태 코드를받는 방법 (전송되기 전에) .... –

관련 문제