phpsource/캐시&세션&쿠키
{캐시리미터}5.헤더관련 PHP함수
방글24
2001. 1. 16. 16:51
header() 함수
int header(string string)
header() 함수는 HTML파일의 최상단에서 HTTP 헤더 문자열을 protocol level에서 데이터를 브라우저로 직접 전송할 수 있도록 해 줍니다. HTTP 헤더에 대한 자세한 내용은 HTTP/1.1 규약(Specification)을 참조하세요.
header() 함수를 사용할 때 발생하는 에러
header() 함수를 사용하는 데 주의 할 점이 있습니다. header() 함수는 일반적인 HTML 태그 또는 PHP로부터 보내지는 실제의 출력 이전에 호출되어야 합니다. header() 함수를 호출하기 전에 include() 또는 auto_prepend를 통하여 코드를 읽어들일 수 있는데 이러한 코드에 브라우저로 출력되는 스페이스 또는 빈줄이 있으면 에러가 발생합니다. 아래에 에러가 발생하는 3가지 경우를 나타내었습니다. 이러한 에러는 아주 흔히 발생하는 에러입니다.
[code php;gutter:false]
echo("연습삼아\n"); // header() 함수 전에 출력함수를 사용하면 안됨
header(......); [/code]
header(......); [/code]
[code php;gutter:false]
<?
<--- 이곳에 공백(white space)이 있으면 안됨
header(......); [/code]
<--- 이곳에 공백(white space)이 있으면 안됨
header(......); [/code]
[code php;gutter:false]
<--- 이곳에 공백(white space)이 있으면 안됨
<?
header(......); [/code]
<?
header(......); [/code]
동적으로 생성되는 웹컨텐트
PHP 스크립트는 자주 동적으로 HTML을 생성하여야 하는데, 이러한 경우에는 서버와 클라이언트 브라우저 사이에 있는 브라우저 캐시 또는 프록시 캐시에 의해 캐싱되어서는 안됩니다. 많은 프록시와 클라이언트들은 아래와 같은 코드를 가지고 강제적으로 캐시를 중지시킬 수 있습니다.
[code php;gutter:false]
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 과거의 날짜
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); // 항상 수정되고 있는
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0 [/code]
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); // 항상 수정되고 있는
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0 [/code]
headers_sent() 함수
boolean headers_sent(void)
(PHP 3>= 3.0.8, PHP 4 >= 4.0b2) HTTP 헤더가 이미 송신되고 있는 경우에는 true를, 그렇지 않은 경우에는 false를 돌려주기 위한 함수입니다.
setcookie() 함수
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
쿠키를 설정하도록 하는 요청을 브라우저로 전달하기 위해 setcookie() 함수를 사용합니다. 이 요청은 클라이언트 상에 있는 쿠키를 갱신하거나 작성합니다. 이 코드는 반드시 페이지의 맨 앞에 들어 있어야 합니다. PHP 스크립트를 시작하는 태그("<?php") 앞의 컨텐트(공백 문자를 포함하여)는 오류를 발생시킵니다.
만약 HTTP 응답이 이미 전송된 이후에 setcookie() 함수가 호출된다면 PHP는 자동적으로 경고 메시지를 발생시킵니다.
setcookie() 함수에 대한 자세한 사용법이나 설명은 관련서적이나 홈페이지를 참조바랍니다.
GetAllHeaders() 함수
array GetAllHeaders(void)
모든 HTTP 요구 헤더를 분석하여 읽어옵니다. 이 함수는 현재의 요구에 해당하는 모든 HTTP 헤더를 가지는 연상 배열을 돌려줍니다.
GetAllHeaders() 함수는 PHP가 Apache 모듈로 설치되어 있을 경우에만 동작합니다. 환경 변수로부터 HTTP 요구 헤더값을 얻을 수도 있는데 이 방법은 PHP를 Apache모듈로 설치되지 않을 때도 동작합니다. 정의된 모든 환경 변수에 대한 리스트를 얻으려면 phpinfo() 함수를 사용하세요.
[code php;gutter:false]
$headers = GetAllHeaders();
while (list($header,$value)=each($headers)) {
echo "$header: $value\n";
} [/code]
while (list($header,$value)=each($headers)) {
echo "$header: $value\n";
} [/code]
이 예는, 현재의 요구에 관계되어 있는 모든 요구 헤더를 표시 합니다