Redirigir PHP con encabezados personalizados

Estoy escribiendo un sistema de autorización básico y estoy luchando un poco con eso. Hay dos archivos involucrados: index.php y login.php . El formulario de inicio de sesión es bastante simple (está dentro de index.php ):

 

El contenido de login.php :

 <?php // Include the launcher file. require_once('globals.php'); require_once(CORE . 'launcher.php'); // Collect the information sent to us. $mail = (isset($_POST['email'])) ? $_POST['email'] : ''; $password = (isset($_POST['password'])) ? $_POST['password'] : ''; $LoginError = false; // AUTHORIZATION STUFF HERE if ($LoginError) { header('Status: 200'); header('X-Test: test'); header('Location: index.php'); exit(); } 

Como puede ver, estoy enviando un encabezado personalizado al script que contiene el formulario en caso de que haya un error durante el headers_list() . En el index.php , estoy usando headers_list() , pero el encabezado que estoy enviando es no presente en la lista.

¿Qué está causando eso? Lo he intentado con php_value "output_buffering" "0" en el archivo .htaccess , pero no php_value "output_buffering" "0" éxito.

ACTUALIZACIÓN Después de registrar en Chrome, el navegador está recibiendo el encabezado, pero no está disponible en PHP.

Gracias por adelantado.

La redirección es enviada y procesada por el cliente que responde navegando a la Location: index.php dada Location: index.php . No debe esperar que el navegador proporcione el encabezado personalizado cuando solicita index.php del servidor.

 CLIENT SERVER |------- POST login.php ------------------>| | | |<- 200, Location: index.php, X-Test:test -| (this is where you send the header) | | |------- GET index.php ------------------->| (no header from client to server) 

Los encabezados () que especifique con el header() estarán presentes en la salida del servidor -> cliente. Sin embargo, al hacer una redirección, el navegador realizará una NUEVA solicitud, cliente -> servidor, y el navegador no tiene la obligación de incluir sus encabezados personalizados en esta nueva solicitud.

Enviaré un encabezado personalizado al script que contiene el formulario

No tu no eres. El envío de un encabezado personalizado al cliente (navegador del usuario) y el cliente simplemente lo ignorarán / descartarán.

Si necesita mantener el estado, use una cookie / sesiones o coloque algo en la nueva ubicación, por ejemplo, el header('Location: index.php?login=false'); .

Se están recibiendo los encabezados personalizados que está enviando al usuario. Pero se descartan cuando el navegador realiza la redirección porque el navegador no los envía a la página redireccionada. Es por eso que no los ves.