PHP | headers_sent() function
Last Updated :
07 Aug, 2021
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
if (!headers_sent()) {
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( "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 (!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 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 redirect_rel( $relative_url ) {
$url = server_url() . dirname( $_SERVER [ 'PHP_SELF' ])
. "/" . $relative_url ;
if (!headers_sent()) {
header( "Location: $url" );
}
else {
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
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...