zoukankan      html  css  js  c++  java
  • http_response_code()和header()

    1.http_response_code — 获取/设置响应的 HTTP 状态码
    向服务器发送成功状态码:http_response_code(200);

    返回值
    如果提供了response_code,将返回先前的状态码。 如果未提供response_code,会返回当前的状态码。 在 Web 服务器环境里,这些状态码的默认值都是 200

    <?php
    // 获取当前状态码,并设置新的状态码
    var_dump(http_response_code(404));//获取新的状态码
    var_dump(http_response_code());
    ?>
    
    以上例程会输出:
    
    int(200)
    int(404)

    2.header() 函数向客户端发送原始的 HTTP 报头。

    认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):
    header(string,replace,http_response_code)

    header("HTTP/1.0 404 Not Found");
    header("Location: http://www.example.com/");
    header('Content-type: application/pdf');
    
    header('HTTP/1.1 301 Moved Permanently');
    header("HTTP/1.1 404 Not Found");
    header("Location: http://www.kongjianjia.com".$_SERVER['REQUEST_URI']);
    header("Location:".$_SERVER["SERVER_NAME"]);//$_SERVER["HTTP_HOST"]
    
    // 301 Moved Permanently
    header("Location: /foo.php",TRUE,301);
    
    // 302 Found
    header("Location: /foo.php",TRUE,302);
    header("Location: /foo.php");
    
    // 303 See Other
    header("Location: /foo.php",TRUE,303);
    
    // 307 Temporary Redirect
    header("Location: /foo.php",TRUE,307);
    
    // It will be called downloaded.pdf
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    
    // The PDF source is in original.pdf
    readfile('original.pdf');   file()
    
    header("Cache-Control: no-cache, must-revalidate");
    <?php
    /* Redirect to a different page in the current directory that was requested */
    $host  = $_SERVER['HTTP_HOST'];
    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\');
    $extra = 'mypage.php';
    header("Location: http://$host$uri/$extra");
    exit;
    ?>
    header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK'); //向服务器发送成功状态码200
    这里$_SERVER['SERVER_PROTOCOL']就是请求页面时通信协议的名称和版本  例如:HTTP/1.1
    
    header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
    header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
    header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');
    <?php
        // Test image.
        $fn = '/test/foo.png';
    
        // Getting headers sent by the client.
        $headers = apache_request_headers(); 
    
        // Checking if the client is validating his cache and if it is current.
        if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fn))) {
            // Client's cache IS current, so we just respond '304 Not Modified'.
            header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 304);
        } else {
            // Image not cached or cache outdated, we respond '200 OK' and output the image.
            header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 200);
            header('Content-Length: '.filesize($fn));
            header('Content-Type: image/png');
            print file_get_contents($fn);
        }

    3.get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

    说明
    get_headers ( string $url [, int $format = 0 ] ) : array
    get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。

    <?php
    $url = 'http://www.example.com';
    print_r(get_headers($url));
    print_r(get_headers($url, 1));
    ?>
    
    以上例程的输出类似于:
    Array
    (
        [0] => HTTP/1.1 200 OK
        [1] => Date: Sat, 29 May 2004 12:28:13 GMT
        [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
        [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
        [4] => ETag: "3f80f-1b6-3e1cb03b"
        [5] => Accept-Ranges: bytes
        [6] => Content-Length: 438
        [7] => Connection: close
        [8] => Content-Type: text/html
    )
    
    Array
    (
        [0] => HTTP/1.1 200 OK
        [Date] => Sat, 29 May 2004 12:28:14 GMT
        [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
        [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
        [ETag] => "3f80f-1b6-3e1cb03b"
        [Accept-Ranges] => bytes
        [Content-Length] => 438
        [Connection] => close
        [Content-Type] => text/html
    )

    4.apache_request_headers — 获取全部 HTTP 请求头信息
    获取当前请求的所有请求头信息

    <?php
    $headers = apache_request_headers();
    
    foreach ($headers as $header => $value) {
        echo "$header: $value <br />
    ";
    }
    ?>
    以上例程的输出类似于:
    
    Accept: */*
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0
    Host: www.example.com
    Connection: Keep-Alive

    5.apache_response_headers ---获得全部 HTTP 响应头信息。

    <?php
    print_r(apache_response_headers());
    ?>
    
    Array
    (
        [Accept-Ranges] => bytes
        [X-Powered-By] => PHP/4.3.8
    )
  • 相关阅读:
    bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
    1691: [Usaco2007 Dec]挑剔的美食家
    CF809E Surprise me!
    「总结」狄利克雷卷积,莫比乌斯反演和杜教筛
    AT3611 Tree MST
    AT2134 Zigzag MST
    CF891C Envy
    【HNOI2018】游戏
    【HNOI2016】树
    【HNOI2016】网络
  • 原文地址:https://www.cnblogs.com/laijinquan/p/11583635.html
Copyright © 2011-2022 走看看