码迷,mamicode.com
首页 > Web开发 > 详细

php header setcookie headers_sent函数 函数检查 HTTP 标头是否已被发送以及在哪里被发送

时间:2016-03-05 22:07:10      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

这里需要注意的 header() 最常被拿來送 header(‘Location: /‘); 等等, 做网页重定向的动作。

在使用 setcookie(), header()... 等函数前 不可以用任何的输出。若必须怎需要用log记录。

如果有输出 则headers_sent将会返回 true。

 

我在使用TP  直接用 php 命令运行时( php index.php /Home/Login/test) 发现没有返回输出,查看发现,

里面有$this->redirect("")函数,此函数间接调用了redirect函数,如下:

/**
* URL重定向
* @param string $url 重定向的URL地址
* @param integer $time 重定向的等待时间(秒)
* @param string $msg 重定向前的提示信息
* @return void
*/
function redirect($url, $time=0, $msg=‘‘) {
//多行URL地址支持
$url = str_replace(array("\n", "\r"), ‘‘, $url);
if (empty($msg))
$msg = "系统将在{$time}秒之后自动跳转到{$url}!";
if (!headers_sent()) {
// redirect
if (0 === $time) {
header(‘Location: ‘ . $url);
} else {
header("refresh:{$time};url={$url}");
echo($msg);
}
exit();
} else {
$str = "<meta http-equiv=‘Refresh‘ content=‘{$time};URL={$url}‘>";
if ($time != 0)
$str .= $msg;
exit($str);
}
}

说明只执行了了header(‘Location: ‘ . $url);的发送让后就exit(); 命令行的运行不能接收到 header的内容 目前不知道 为什么? 

如果在 header(‘Location: ‘ . $url);之前有 打印输出 如echo  就可以接收到<meta http-equiv=‘Refresh‘ content=‘0;URL=./Login/logout‘>的信息。

如有知道的 请留言。

php header setcookie headers_sent函数 函数检查 HTTP 标头是否已被发送以及在哪里被发送

标签:

原文地址:http://www.cnblogs.com/swing07/p/5245874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!