本类函数可以以低至 HTTP 协议的级别来操纵发回远端浏览器的输出。




本函数库作为 PHP 内核的一部分,不用安装就能使用。


本扩展模块在 php.ini 中未定义任何配置选项。





header -- 发送一个原始 HTTP 标头
headers_list -- 返回已发送(或准备发送)的响应标头的列表
headers_sent -- 检查标头是否已被发送以及在哪里被发送
setcookie -- 发送一个 cookie 信息
setrawcookie -- 发送一个其值未经 urlencode 编码的 cookie

add a note add a note User Contributed Notes
alan at akbkhome dot com
11-Aug-2006 12:19
Note: the Classes are Only available in PHP5, the functions however work in both PHP4 and PHP5.
henke dot andersson at comhem dot se
15-Jan-2006 05:01
If you want to make outgoing http connections with php, concider the curl extension.
woei at xs4all dot nl
30-Nov-2005 11:57
Actually, if you want to redirect a user why let HTML or JavaScript do it? Simply do this:

header("Location: http://www.example.com/");
08-Jul-2004 02:39
Regarding what the guy before said.  We've experienced problems where certain firewalls have encrypted the HTTP_REFERER meaning that it doesnt always contain the place you've come from.

Better to track where the user has come from either in a form post or in the url.
28-Apr-2004 10:05
in reference to toashwinisidhu's and breaker's note, a more effective way would be to use meta-tag redirect, for example.

= "http://somesite.com/index.php"; // target of the redirect
$delay = "3"; // 3 second delay

echo '<meta http-equiv="refresh" content="'.$delay.';url='.$url.'">';


The meta goes in the head of the HTML.
This method does not require javascript and is supported by most browsers and is rarely, if ever, filterd out.
toashwinisidhu at yahoo dot com
21-Apr-2004 06:55
The method given below may not sometimes work.
The following method has always worked with me:
just put the following 3 lines in your PHP code

<body onload=setTimeout("location.href='$url'",$sec)>

$sec is the time in second after which the browser would automatically go to the url. Set it to 0 if you do not want to give any time.
You can use this function on the events of various html/form objects (eg.-onclick for button).eg.
<input type=button value="Go to Php.net" onclick=setTimeout("location.href='php.net'",0)>
Use this to one step back
<input type="button" value="Back" onclick=history.go(-1)>
jeffp-php at outofservice dot com
05-Jan-2001 12:37

You'll usually access variables from forms sent via POST method by just accessing the associated PHP global variable.

However, if your POST data is not URI encoded (i.e., custom application that's not form-based) PHP won't parse the data into nice variables for you.  You will need to use $HTTP_RAW_POST_DATA to access the raw data directly. (This should return a copy of the data given to the PHP process on STDIN; note that you wan't be able to open STDIN and read it yourself because PHP already did so itself.)