PHP | headers_sent() function
The headers_sent() function is an inbuilt function in PHP which is used to determines whether the header is successfully sent or not. The headers_sent() function returns True if header sent successfully and False otherwise.
Syntax:
bool headers_sent( $file, $line )
Parameters: This function accepts two parameters as mentioned above and described below:
- $file: This parameter holds the filename. It is an optional parameter.
- $line: This parameter holds the line number where output started. It is also optional parameter.
The headers_sent() function will put the PHP source file name and line number where output started in the file and line variables if the file and line parameters are set.
Return Value: This function returns True if headers has been sent and false otherwise.
Example 1:
PHP
<?php // PHP program to illustrate headers_sent() function if (!headers_sent()) { header( "Location:https://en.wikipedia.org/wiki/Main_Page" ); exit (); } ?> |
Output:
In this example, no header is sent previously so !headers_sent() will be TRUE and then header(“Location:https://en.wikipedia.org/wiki/Main_Page”); will send the header information and as per the header it will redirect to the website that is in parameter.
Note: Header cannot be add once header block has been sent. So this function has implemented to avoid errors like.
Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd3/798/438108/public_html/gfg/header.php:1) in /storage/ssd3/798/438108/public_html/gfg/header.php on line 4
Example 2:
PHP
<?php header( "Expires: Sun, 25 Jul 1997 06:02:34 GMT" ); ?> <html> <body> <p>hello world</p> <?php // header is being sent after header is // sent and after output has been started. header( "Cache-Control: no-cache" ); header( "Pragma: no-cache" ); ?> </body> </html> |
Note: The example shown here will not run in online IDE as it doesn’t support redirecting and modifying headers. So, try to run it on hosting server or on localhost.
Output:
hello world
Warning:
Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd3/798/438108/public_html/gfg/header.php:4) in /storage/ssd3/798/438108/public_html/gfg/header.php on line 9
Warning: Cannot modify header information – headers already sent by
(output started at /storage/ssd3/798/438108/public_html/gfg/header.php:4)
in /storage/ssd3/798/438108/public_html/gfg/header.php on line 10
This error can be solved by using headers_sent() function.
Example 3: After resolving the above error.
PHP
<?php header( "Expires: Sun, 25 Jul 1997 06:02:34 GMT" ); ?> <html> <body> <p>hello world</p> <?php //if the header is has not been sent yet then new header will be sent if (!headers_sent()){ header( "Cache-Control: no-cache" ); header( "Pragma: no-cache" ); } ?> </body> </html> |
Output:
hello world
Explanation:
headers_sent() function checking whether header has already been sent or not. so !headers_sent() returns false for which header are not being sent again, avoiding the errors.
NOTE: The example shown here will not run in online IDE as it doesn’t support redirecting and modifying headers. So, try in some hosting server or on localhost.
Example 4:
PHP
<?php // Function to retrieve relative url to create // full url with provided relative url function server_url() { $proto = "http" . ((isset( $_SERVER [ 'HTTPS' ]) && $_SERVER [ 'HTTPS' ] == "on" ) ? "s" : "" ) . "://" ; $server = isset( $_SERVER [ 'HTTP_HOST' ]) ? $_SERVER [ 'HTTP_HOST' ] : $_SERVER [ 'SERVER_NAME' ]; return $proto . $server ; } // Function to redirecting relative url function redirect_rel( $relative_url ) { $url = server_url() . dirname( $_SERVER [ 'PHP_SELF' ]) . "/" . $relative_url ; // Check whether the header is sent or not if (!headers_sent()) { // If header not sent then sending header header( "Location: $url" ); } else { // If header sent then echo "<meta http-equiv=\"refresh\" content=\"0;url=$url\">\r\n" ; } } redirect_rel( "server.php" ); ?> |
Output:
Reference: http://php.net/manual/en/function.headers-sent.php
Contact Us