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
// 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
Similar Reads
JavaScript Tutorial JavaScript is a programming language used to create dynamic content for websites. It is a lightweight, cross-platform, and single-threaded programming language. It's an interpreted language that executes code line by line, providing more flexibility.JavaScript on Client Side: On the client side, Jav
11 min read
Web Development Web development is the process of creating, building, and maintaining websites and web applications. It involves everything from web design to programming and database management. Web development is generally divided into three core areas: Frontend Development, Backend Development, and Full Stack De
5 min read
React Interview Questions and Answers React is an efficient, flexible, and open-source JavaScript library that allows developers to create simple, fast, and scalable web applications. Jordan Walke, a software engineer who was working for Facebook, created React. Developers with a JavaScript background can easily develop web applications
15+ min read
React Tutorial React is a powerful JavaScript library for building fast, scalable front-end applications. Created by Facebook, it's known for its component-based structure, single-page applications (SPAs), and virtual DOM,enabling efficient UI updates and a seamless user experience.Note: The latest stable version
7 min read
JavaScript Interview Questions and Answers JavaScript is the most used programming language for developing websites, web servers, mobile applications, and many other platforms. In Both Front-end and Back-end Interviews, JavaScript was asked, and its difficulty depends upon the on your profile and company. Here, we compiled 70+ JS Interview q
15+ min read
Domain Name System (DNS) DNS is a hierarchical and distributed naming system that translates domain names into IP addresses. When you type a domain name like www.geeksforgeeks.org into your browser, DNS ensures that the request reaches the correct server by resolving the domain to its corresponding IP address.Without DNS, w
8 min read
HTML Interview Questions and Answers HTML (HyperText Markup Language) is the foundational language for creating web pages and web applications. Whether you're a fresher or an experienced professional, preparing for an HTML interview requires a solid understanding of both basic and advanced concepts. Below is a curated list of 50+ HTML
14 min read
NodeJS Interview Questions and Answers NodeJS is one of the most popular runtime environments, known for its efficiency, scalability, and ability to handle asynchronous operations. It is built on Chromeâs V8 JavaScript engine for executing JavaScript code outside of a browser. It is extensively used by top companies such as LinkedIn, Net
15+ min read
Web Development Technologies Web development refers to building, creating, and maintaining websites. It includes aspects such as web design, web publishing, web programming, and database management. It is the creation of an application that works over the internet, i.e., websites.To better understand the foundation of web devel
7 min read
CSS Tutorial CSS stands for Cascading Style Sheets. It is a stylesheet language used to style and enhance website presentation. CSS is one of the three main components of a webpage, along with HTML and JavaScript.HTML adds Structure to a web page.JavaScript adds logic to it and CSS makes it visually appealing or
7 min read