swing07

这里需要注意的 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\'>的信息。

如有知道的 请留言。

分类:

技术点:

相关文章:

  • 2021-06-26
  • 2021-09-28
  • 2021-09-28
  • 2021-05-12
  • 2021-12-15
  • 2021-12-29
  • 2021-09-30
猜你喜欢
  • 2021-09-02
  • 2021-09-28
  • 2021-11-02
  • 2021-11-02
  • 2021-06-13
  • 2021-11-02
相关资源
相似解决方案