Home  >  Article  >  php教程  >  Function header--page jump

Function header--page jump

高洛峰
高洛峰Original
2016-12-20 10:26:231478browse

Function header functions:
Page jump

http header information
Header information has many functions, the most important ones are the following:
1. Jump
When the browser receives the Location: xxxx in the header information, it will Automatically jump to the URL pointed to by xxxx, which is a bit similar to writing a jump in js. But this jump is only known by the browser, and users cannot see it regardless of whether there is anything in the content.
Example: header("Location: http://www.example.com/");

2. Specify the content of the web page
The same XML file, if the header information specifies: Content-type: application/xml, The browser will parse it according to the XML file format. However, if the header information is: Content-type: text/xml, the browser will parse it as stored text. (Browsers do not parse files according to extensions)
Example: header('Content-type: application/pdf');

3. Attachment
I don’t know if you have noticed that sometimes you download things from some websites, click download After connecting, the browser opened the attachment as a web page, and all the characters displayed were garbled. This problem is also related to the header information. Sometimes the browser determines whether to open or save based on Content-type, so sometimes it will make a wrong judgment (mainly because the website designer forgets to write Content-type). In fact, there is another way to specify that the content is an attachment and needs to be saved. This is: Content-Disposition: attachment; filename="xxxxx"
Example: header('Content-Disposition: attachment; filename="downloaded.pdf"'
Refinement request
4×× Client error
5×× Server error

Syntax:
header(string,replace,http_response_code)
Parameters
string: required. Specifies the header string to be sent.
replacement: optional. Indicates whether this header replaces the previous header, or adds a second header. Default is true (replacement). false (allow multiple headers of the same type).
http_response_code: Optional. Forces the HTTP response code to the specified value. (Available in PHP 4 and above)

Example 1:
Redirect webpage
Force users to get the latest data every time they visit this page, rather than using the client-side cache.
                     // Tell the browser the expiration time of this page (expressed in Greenwich Mean Time), as long as it is a date that has already passed.
            header("Expires:Mon,26 Jul 1970 05:00:00 GMT");          

                                                                                                                           // Tell the browser the last updated date of this page (expressed in Greenwich Mean Time), which is the same day, the purpose is to force the browser Get the latest information
     header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");                                                                                                                                                                               Control: no-cache, must-revalidate");

//Parameters (compatible with previous servers), that is, compatible with HTTP1.0 protocol
header("Pragma: no-cache");
?>

Example 3:
Output the status value to the browser, mainly used for access control
          header('HTTP/1.1 401 Unauthorized');  
      header('status: 401 Unauthorized'); To restrict a user from accessing this page, you can set the status to 404, as shown below, so that the browser will display that the page does not exist
        header('HTTP/1.1     404   Not Found');                 header("status:     404 Not Found"); //This writing is wrong
?>

Example 5:
Hidden file location
html tag can be used to download ordinary files. If you want to keep the file confidential and you cannot tell others the file link, you can use the header function to download the file.

header("Content-type: audio/mpeg");
header("Content-Disposition: attachment; filename=filenale");
header("Content-Description: PHP3 Generated Data");

Example 6:
Input content before the header function

Generally speaking, html content cannot be output before the header function. Similarly, there are setcookie() and session functions. These functions need to add message header information to the output stream. If there are statements such as echo before header() is executed, when header() is encountered later, a "Warning: Cannot modify header information - headers already sent by ...." error will be reported. That is to say, there cannot be any text, blank lines, carriage returns, etc. in front of these functions, and it is best to add the exit() function after the header() function. For example, in the following incorrect writing, there is a blank line between the two php code snippets:

//some code here
?>
//There should be a blank line here
header("http/1.1 403 Forbidden") ;
exit();
?>
Reason:
When the PHP script starts executing, it can send http message header (title) information and body information at the same time. http message header (from header() or SetCookie() function ) is not sent immediately, instead, it is saved to a list. This allows you to modify the header information, including the default header (such as the Content-Type header). However, once the script has sent any non-header output (For example, using HTML or print() call), then PHP must first send all Headers, then terminate the HTTP header. Then continue to send the body data. From this point on, any attempt to add or modify Header information is not allowed. , and will send one of the above error messages.

Solution:
Modify php.ini to turn on caching (output_buffering), or use caching functions ob_start(), ob_end_flush(), etc. in the program. The principle is: when output_buffering is enabled, PHP does not send the HTTP header when the script sends output. Instead, it pipes this output into a dynamically growing cache (only available in PHP 4.0, which has a centralized output mechanism). You can still modify/add headers, or set cookies, since headers are not actually sent. When all scripts terminate, PHP will automatically send HTTP headers to the browser, and then send the contents of the output buffer.



For more function headers--page jump, please pay attention to the PHP Chinese website for related articles!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn