zoukankan      html  css  js  c++  java
  • php header setcookie headers_sent函数 函数检查 HTTP 标头是否已被发送以及在哪里被发送

    这里需要注意的 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(" ", " "), '', $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'>的信息。

    如有知道的 请留言。

  • 相关阅读:
    firFox的HttpRequest插件的使用
    注解事务
    log4j配置说明
    对反射用法的初探
    关于set集合和Iterator迭代器的使用
    Eclipse的使用
    各种地图坐标系转换工具
    day67-CSS字体属性、文字属性、背景属性、css盒子模型
    day66-CSS伪类选择器和伪元素选择器
    day65-CSS选择器和样式优先级
  • 原文地址:https://www.cnblogs.com/swing07/p/5245874.html
Copyright © 2011-2022 走看看