Usage of the PHP header () function (Error settings such as 301, 404, etc.)

Source: Internet
Author: User
Tags php website response code
    1. Header ("http/1.1 404 Not Found");
Copy Code

For the ErrorDocument 404/404.php function in Apache configuration, the

    1. Error_page 404/404.php;
Copy Code

Change into

    1. Error_page 404 =/404.php;
Copy Code

PHP Heager 301

    1. Header ("http/1.1 301 Moved permanently");
    2. Header ("Location: $url");
    3. ?>
Copy Code

Regardless of how many headers the page has, it executes the last one, but conditionally, for example:

    1. Header (' location: ');
    2. Header (' location: ');
    3. Header (' location: ');
Copy Code

This will jump to Baidu

    1. Header (' location: '); Echo ' Programmer's house;
    2. Header (' location: ');
    3. Header (' location: ');
Copy Code

This will jump to Google about the header function of the detailed use of the role: PHP is just the HTTP protocol to the HTML document header to the browser, tell the browser how to handle this page, as for the content of the transfer will need to familiarize yourself with the HTTP protocol, not related to PHP The traditional header must contain one of the following three headers and can only occur once.

    1. <1> redirection features, the most common
    2. Header ("location:");
    3. ?>
Copy Code

<2> forces users to get the latest information each time they access the page, rather than using a cache that exists on the client.

    1. Tell the browser how long this page will expire (in Greenwich Mean Time), as long as the date has passed.
    2. Header ("Expires:mon, Jul 1970 05:00:00 GMT");
    3. Tells the browser that the last update date of this page (in Greenwich Mean Time) is the same day, the purpose is to force the browser to get the latest information
    4. Header ("last-modified:".) Gmdate ("D, D M Y h:i:s"). "GMT");
    5. Tell the client browser not to use the cache
    6. Header ("Cache-control:no-cache, must-revalidate");
    7. Parameters (compatible with previous servers), which is compatible with the HTTP1.0 protocol
    8. Header ("Pragma:no-cache");
    9. Output MIME type
    10. Header ("Content-type:application/file");
    11. File length
    12. Header ("content-length:227685");
    13. Accepted range units
    14. Header ("Accept-ranges:bytes");
    15. File name in the File Save dialog box by default
    16. Header ("content-disposition:attachment; Filename= $filename ");
    17. ?>
Copy Code

<3> output status value to the browser, mainly for access rights control

    1. Header (' http/1.1 401 Unauthorized ');
    2. Header (' status:401 unauthorized ');
    3. ?>
Copy Code

For example, to restrict a user from accessing the page, you can set the status to 404, as shown below, so that the browser is displayed as if the page does not exist

    1. Header (' http/1.1 404 Not Found ');
    2. Header ("status:404 not Found");
    3. ?>
Copy Code

Note: The traditional header must contain one of the following three headers and can only occur once. CONTENT-TYPE:XXXX/YYYY location:xxxx:yyyy/zzzz status:nnn xxxxxx can appear more than two times in the new multi-header specification (Multipart MIME).

Use example one: This example redirects the browser to the official PHP website.

    1. Header ("location:"); Exit
Copy Code

Example two: to the user each time can get the latest information, instead of Proxy or cache data, you can use the following headers

    1. Header ("Expires:mon, Jul 1997 05:00:00 GMT");
    2. Header ("last-modified:".) Gmdate ("D, D M Y h:i:s"). "GMT"); Header ("Cache-control:no-cache, must-revalidate");
    3. Header ("Pragma:no-cache");
Copy Code

Example three: Let the user's browser appear unable to find the file information.

    1. Header ("status:404 not Found");
Copy Code

Example four: Let the user download the file.

    1. Header ("Content-type:application/x-gzip");
    2. Header ("content-disposition:attachment; Filename= file name ");
    3. Header ("Content-description:php3 Generated Data");
Copy Code

Header-Sends an original HTTP header stating void Header (string string [, bool replace [, int http_response_code]])

The header () function is used to send an original HTTP header. See the http/1.1 specification for more information about HTTP headers. The optional parameter, replace, indicates whether to replace the previous similar header or to add a header of the same type. The default is replace, but if you set it to FALSE, you can force multiple, homogeneous headers to be sent. For example:

    1. Header (' www-authenticate:negotiate ');
    2. Header (' WWW-AUTHENTICATE:NTLM ', false);
    3. ?>
Copy Code

The Second optional parameter, Http_response_code, forces the HTTP response code to be set to the specified value (this parameter is a new addition to PHP 4.3.0).

There are two special types of header calls. The first is that the header begins with the string "http/" (not important in case) and can be used to determine the HTTP status code to send. For example, if Apache is configured with PHP to handle error-handling requests that cannot find files (using the ErrorDocument Directive), you need to make sure that the script produces the correct status code.

    1. Header ("http/1.0 404 Not Found")
    2. ?>
Copy Code

Note: The HTTP status code header line is always the first to be sent to the client, and does not control whether the actual header () call is the first one. Unless the HTTP header has been sent, you can overwrite the original by invoking the header () function with the new state line at any time.

HTTP status Detection (HTTP Header):

The second special case is the "location:" header. It does not just send the label back to the browser, it also returns a REDIRECT (302) status code to the browser, unless a 3XX status code has been issued before.

    1. Header ("location:"); /* Redirect Browser */
    2. /* Ensure that subsequent code is not executed after redirection */
    3. Exit
    4. ?>
Copy Code

Note: The http/1.1 standard requires an absolute address URI as the location: parameter, but there are some clients that support relative URIs. You can usually use $_server[' http_host ', $_server[' php_self '] and the dirname () function to generate an absolute URI from a relative URI:

    1. Header ("location:http://%22.$_server[' http_host '/]
    2. . RTrim (dirname ($_server[' php_self '), '/\\ ')
    3. ." /". $relative _url);
    4. ?>
Copy Code

Note: Even if the session.use_trans_sid,session ID is enabled, it will not be passed along with the location header information.    Must be passed manually with SID constants. PHP scripts often produce dynamic content that must not be cached by the browser or proxy server. Many proxy servers and browsers can be disabled by the following methods: Note: You may find that even if you do not output all of the above code, the Web page is not buffered. There are many options that users can set to change the browser's default caching behavior.    By sending the above header, you should be able to overwrite any settings that could cause the script page to be cached.    In addition, when a session is used, the Session_cache_limiter () function and the Session.cache_limiter option can be used to automatically generate the correct cache-related headers. Remember that the header () must be called before any actual output, whether it's from a normal HTML tag, a blank line, or PHP. One common mistake is that when reading code through include (), require (), or some other file access class function, some spaces or blank lines are sent before the header () is called. This error is also common in a separate php/html file.

    1. Header ("Cache-control:no-cache, must-revalidate"); http/1.1
    2. Header ("Expires:mon, Jul 1997 05:00:00 GMT"); The past time
    3. ?>
Copy Code

    1. /* This will produce an error because the header ()
    2. * I've been outputting something before * *
    3. Header (' location:');
    4. ?>
Copy Code

Note: Since PHP 4, some output buffering functions can be used to solve this problem. The price is to keep all the output from the browser on the server until the next command sends them. You can use Ob_start () and Ob_end_flush () in your code to implement such functionality, either by modifying the output_buffering configuration options in php.ini, or by modifying the server configuration file.

Header () Two common uses:

    1. To set the page encoding:
    2. Header (' content-type:text/html;charset=gb2312 ');
    3. Adjustment page:
    4. Header (' location: ');
Copy Code
  • Related Article

    Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.