funciona - Obtener el tipo de contenido PHP desde el encabezado()
header(); php (2)
Necesito obtener el tipo de contenido de PHP por "razones de seguridad". Por ejemplo, si usó el header("Content-type: text/html; charset=utf-8")
función header("Content-type: text/html; charset=utf-8")
, cómo, en un momento futuro de ejecución, puedo recibir el tipo de contenido ( text/html
) y el juego de caracteres ( utf-8
) por separado?
Mi verdadero problema es saber qué juego de caracteres se está utilizando y modificarlo solo , si es necesario, sin tener que redefinir la información Content-type
. Es decir, si content-type es application/xml
, consérvelo, pero cambie el único charset.
Ex.
Original: Content-type: text/html
First: -> set to application/xml.
Content-type: application/xml
Second: -> set charset.
Content-type: application/xml; charset=utf-8
Third: -> set to text/html
Content-type: text/html; charset=utf-8
¿Como es posible?
También puedes usar la función get_headers ()
http://php.net/manual/en/function.get-headers.php
Solo tenga en cuenta que no puede "solo modificar" el tipo de contenido. Si desea cambiarlo, debe volver a llamar a la función header ().
Puede usar la función headers_list para obtener los encabezados de respuesta. A partir de ahí, debería haber solo analizar el encabezado relevante y volver a escribir, si es necesario.
$headers = headers_list();
// get the content type header
foreach($headers as $header){
if (substr(strtolower($header),0,13) == "content-type:"){
list($contentType, $charset) = explode(";", trim(substr($header, 14), 2));
if (strtolower(trim($charset)) != "charset=utf-8"){
header("Content-Type: ".trim($contentType)."; charset=utf-8");
}
}
}