header()은 원시 헤더를 보내는 데 사용됩니다. 헤더에 대한 자세한 내용은 HTTP/1.1 사양을 참조하세요.
예 1:
<?PHP Header("Location: http://www.php.cn"); exit;//在每个重定向之后都必须加上“exit",避免发生错误后,继续执行。 ?>
------------- ------------- ----------- ------------- -----
예 2: 시청자가 최신 정보를 얻을 수 있도록 IE
에서 페이지 캐싱을 비활성화합니다. 프록시나 캐시의 정보 대신 항상 정보를 가져옵니다.
<?PHP header( 'Expires: Fri, 4 Dec 2009 09:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); //兼容http1.0和https ?>
CacheControl = no-cache Pragma=no-cache Expires = -1
서버의 웹 페이지가 자주 변경되는 경우 Expires를 -1로 설정하세요. 즉시 만료됩니다. 웹페이지가 매일 오전 1시에 업데이트된다면 만료일을 다음 날 오전 1시로 설정할 수 있습니다. HTTP1.1 서버가 CacheControl = no-cache를 지정하면 브라우저는 웹 페이지를 캐시하지 않습니다.
이전 HTTP 1.0 서버는 Cache-Control 헤더를 사용할 수 없습니다. 따라서 HTTP 1.0 서버와의 하위 호환성을 위해 IE는 Pragma:no-cache 헤더를 사용하여 HTTP에 대한 특별한 지원을 제공합니다. 클라이언트가 보안 연결을 통해 서버와 통신하고 서버가 응답으로 Pragma:no-cache 헤더를 반환하는 경우 Internet Explorer는 응답을 캐시하지 않습니다.
참고: Pragma:no-cache는 보안 연결에서 사용될 때만 캐싱을 방지합니다. 비보안 페이지에서 사용되는 경우 처리는 Expires:-1과 동일하지만 페이지는 즉시 만료된 것으로 표시됩니다.
http-equiv 메타 태그:
http-equiv 메타는 html 페이지에서 지정된 http 메시지 헤더를 표시하는 데 사용할 수 있습니다. 이전 버전의 IE는 html 메타 태그를 지원하지 않을 수 있으므로 http 메시지 헤더를 사용하여 캐싱을 비활성화하는 것이 가장 좋습니다.
-------------------------------------- ---------------------
예 3: 사용자의 브라우저에 파일이 표시될 수 없다는 메시지를 표시하도록 허용 찾을 수 있습니다.
인터넷의 많은 정보에 따르면 PHP의 header() 함수는 header("Status: 404 Not Found")와 같은
상태 헤더를 브라우저에 보낼 수 있습니다. 그러나 실제로 브라우저에서 반환된 응답은 다음과 같습니다.
HTTP/1.x 200 OK Date: Thu, 03 Aug 2006 07:49:11 GMT Server: Apache/2.0.55 (Win32) PHP/5.0.5 X-Powered-By: PHP/5.0.5 Status: 404 Not Found Content-Length: 0 Keep-Alive: timeout=15, max=98 Connection: Keep-Alive Content-Type: text/html
일부 정보를 확인한 후 올바른 작성 방법은 다음과 같습니다.
header(”http/1.1 404 Not Found”);
첫 번째 부분은 HTTP 프로토콜 버전(HTTP 버전)입니다. 상태 코드(Status) 입니다. 세 번째 부분은 Reason-Phrase입니다.
-------------------------------------- ---------------------
예 4: 사용자가 파일을 다운로드하도록 허용(숨겨진 파일 위치)
html 태그 로 일반적인 파일 다운로드 를 실현할 수 있습니다. 파일을 기밀로 유지하고 싶고 다른 사람에게 파일 링크를 알릴 수 없는 경우 헤더 기능을 사용하여 파일을 다운로드할 수 있습니다.
<?php header("Content-type: application/x-gzip"); header("Content-Disposition: attachment; filename=文件名/"); header("Content-Description: PHP Generated Data"); ?>
예제 4: 헤더 함수 앞에 콘텐츠를 입력하세요
일반적으로 html 콘텐츠는 헤더 함수 앞에 출력될 수 없습니다. 유사한 함수에는 setcookie() 및 세션 함수가 포함됩니다. 이러한 함수는 출력 스트림에 메시지 헤더 정보를 추가해야 합니다. . header()가 실행되기 전에 echo와 같은 문이 있는 경우 나중에 header()를 만나면 "경고: 헤더 정보를 수정할 수 없습니다. 헤더는 이미 ....에서 전송되었습니다."라는 오류가 보고됩니다. 즉, 이들 함수 앞에는 텍스트, 빈 줄, 캐리지 리턴 등이 있어서는 안 되며, header() 함수 뒤에 exit() 함수를 추가하는 것이 가장 좋습니다. 예를 들어, 다음과 같은 잘못된 쓰기에는 두 개의 php 코드 섹션 사이에 빈 줄이 있습니다.
//some code here <?php //这里应该是一个空行 header(”http/1.1 403 Forbidden”); exit(); ?>
原因是:PHP脚本开始执行 时,它可以同时发送http消息头部(标题)信息和主体信息. http消息头部(来自 header() 或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中. 这样就可以允许你修改标题信息,包括缺省的标题(例如 Content-Type 标题).但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML 或 print() 调用),那么PHP就必须先发送完所有的Header,然后终止 HTTP header.而后继续发送主体数据.从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。
解决办法:
修改php.ini打开缓存(output_buffering),或者在程序中使用缓存函数ob_start(),ob_end_flush()等。原理是:output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTP header。相反,它将此输出通过管道(pipe)输入到动态增加的缓存中(只能在PHP 4.0中使用,它具有中央化的输出机制)。你仍然可以修改/添加header,或者设置cookie,因为header实际上并没有发送。当全部脚本终止时,PHP将自动发送HTTP header到浏览器,然后再发送输出缓冲中的内容。
=================================================================
PHP 手册实例应用
1:您可以使用heder命令,强制使浏览器使用新鲜的内容(无缓存) 。
也可以给网址增加了一个唯一的编号,使其每次都读取新的内容,避免缓存。
example:
<?php print "<img src="cs.jpg" mce_src="cs.jpg">"; //通常读取的是缓存文件 ?> <? print "<img src="cs.jpg?".time()."" mce_src="cs.jpg?".time()."">"; //增加了唯一的编号,使浏览器重新请求 w//print "<img src="cs.jpg?".rand(100,999)."" mce_src="cs.jpg?".rand(100,999)."">"; ?>
2: 下面是个很好的函数,将图片传送给浏览器显示。
<?php function PE_img_by_path($PE_imgpath = "") { if (file_exists($PE_imgpath)) { $PE_imgarray = pathinfo($PE_imgpath); $iconcontent = file_get_contents($PE_imgpath); header("Content-type: image/" . $PE_imgarray["extension"]); header('Content-length: ' . strlen($iconcontent)); echo $iconcontent; die(0); } return false; } ?>
위 내용은 PHP에서 헤더 사용의 확장에 대해 이야기합시다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!