PHP | función headers_sent()

La función headers_sent() es una función incorporada en PHP que se usa para determinar si el encabezado se envía con éxito o no. La función headers_sent() devuelve True si el encabezado se envió correctamente y False en caso contrario.

Sintaxis: 

bool headers_sent( $file, $line )

Parámetros: esta función acepta dos parámetros, como se mencionó anteriormente y se describe a continuación:  

  • $archivo: este parámetro contiene el nombre del archivo. Es un parámetro opcional.
  • $line: este parámetro contiene el número de línea donde comenzó la salida. También es un parámetro opcional.

La función headers_sent() colocará el nombre del archivo fuente de PHP y el número de línea donde comenzó la salida en las variables de archivo y línea si los parámetros de archivo y línea están configurados.

Valor de retorno: esta función devuelve True si se han enviado encabezados y false en caso contrario.

Ejemplo 1:  

PHP

<?php
 
// PHP program to illustrate headers_sent() function
if(!headers_sent()) {
    header("Location:https://en.wikipedia.org/wiki/Main_Page");
    exit();
}
 
?>

Producción: 

En este ejemplo, no se envió ningún encabezado previamente, por lo que !headers_sent() será VERDADERO y luego el encabezado («Ubicación: https://en.wikipedia.org/wiki/Main_Page»); enviará la información del encabezado y, según el encabezado, se redirigirá al sitio web que está en el parámetro.

Nota: el encabezado no se puede agregar una vez que se ha enviado el bloque de encabezado. Así que esta función se ha implementado para evitar errores como. 

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

Ejemplo 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>

Nota: El ejemplo que se muestra aquí no se ejecutará en el IDE en línea, ya que no admite la redirección ni la modificación de encabezados. Entonces, intente ejecutarlo en el servidor de alojamiento o en localhost. 

Producción: 

hello world

Advertencia:  

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

Advertencia: no se puede modificar la información del encabezado: los encabezados ya se enviaron 
(la salida comenzó en /storage/ssd3/798/438108/public_html/gfg/header.php:4) 
en /storage/ssd3/798/438108/public_html/gfg/header. php en la línea 10
Este error se puede resolver usando la función headers_sent(). 

Ejemplo 3: Después de resolver el error anterior.  

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>

Producción:

hello world
 

Explicación: 
la función headers_sent() verifica si el encabezado ya se envió o no. por lo tanto, !headers_sent() devuelve falso para el cual el encabezado no se envía nuevamente, evitando los errores. 

NOTA: El ejemplo que se muestra aquí no se ejecutará en el IDE en línea, ya que no admite la redirección ni la modificación de encabezados. Entonces, intente en algún servidor de alojamiento o en localhost.

Ejemplo 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");
 
?>

Producción: 

Referencia: http://php.net/manual/en/function.headers-sent.php
 

Publicación traducida automáticamente

Artículo escrito por gekcho y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *