Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Network headers_sent() Function



The PHP Network headers_sent() function is used to check if HTTP headers have already been sent. The headers are the initial component of the response sent to the browser. Once headers have been communicated, the header() function cannot be used to add new headers.

This function helps to avoid issues by confirming that headers are sent. You may also use it to find the file name and line number where the output started. It returns false if no headers are sent, true otherwise. This is useful for debugging and works well with output buffers. It supports PHP 4, 5, 7, and 8.

Syntax

Below is the syntax of the PHP Network headers_sent() function −

bool headers_sent ( string &$filename, int &$line )

Parameters

Here are the parameters of the headers_sent() function −

  • $filename − (Required) It is used to store the name of the PHP file where the headers were sent.

  • $line − (Optional) It is the line number where the output started.

Return Value

The headers_sent() function will return FALSE if no HTTP headers have been sent and TRUE otherwise.

PHP Version

First introduced in core PHP 4, the headers_sent() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

This program simply checks if headers were sent and prints a message. It shows the most simple implementation of the PHP Network headers_sent() function.

<?php
   // Check if headers are sent
   if (headers_sent()) {
      echo "Headers have already been sent!";
   } else {
      echo "Headers are not sent yet.";
   }
?>

Output

Here is the outcome of the following code −

Headers are not sent yet.

Example 2

In the below PHP code we will use the headers_sent() function and try to send a header after checking if headers are already sent for avoiding errors.

<?php
   // Check before sending headers
   if (!headers_sent()) {
      header("Content-Type: text/plain");
      echo "Header sent successfully.";
   } else {
      echo "Cannot send headers, they are already sent!";
   }
?> 

Output

This will generate the below output −

Header sent successfully.

Example 3

Now the below code detects the file and line where headers were sent. So this program basically uses the optional parameters of headers_sent() to identify where output started.

<?php
   // Output some text
   echo "Hello, world!";

   // Check where headers were sent
   if (headers_sent($file, $line)) {
      echo "Headers were sent in file $file on line $line.";
   } else {
      echo "Headers are not sent yet.";
   }
?> 

Output

This will create the below output −

Hello, world!Headers were sent in file /Users/abc

Example 4

In this program we are using output buffering to control header transmission and use headers_sent() function. So it uses output buffering to prevent accidental header transmission and shows how to control when headers are sent.

<?php
   // Start output buffering
   ob_start();

   // Output some text 
   echo "This is buffered output.";

   // Check if headers are sent
   if (!headers_sent()) {
      header("Content-Type: text/plain");
      echo " Header sent with buffering.";
   }

   // End buffering and send output
   ob_end_flush(); 
?> 

Output

Following is the output of the above code −

This is buffered output. Header sent with buffering.
php_function_reference.htm
Advertisements