NorfiPC
NorfiPC » Informaciones utiles » Mostrar los encabezados HTTP

Mostrar los encabezados HTTP a los visitantes con PHP

Códigos para insertar en el código fuente de las páginas y mostrar la dirección IP y otras informaciones del usuario y del servidor web. Lista con los principales encabezados o HTTP headers que se pueden escribir usando PHP. Requisitos necesarios.
En internet al cargar con nuestro navegador una página web cualquiera, previamente se efectúan una serie de operaciones que transcurren de forma invisible a nosotros, pero son determinantes para poder establecer una conexión.
Al presionar un link en una página o introducir una dirección URL, el navegador envía una serie de peticiones al servidor web donde se almacena la página solicitada, son conocidas estas peticiones como encabezados web o HTTP headers y son establecidos por los protocolos existentes.
El objetivo de las peticiones es informarle al servidor de datos del solicitante, como la dirección IP, el tipo de equipo donde se va a mostrar la página, el sistema operativo instalado, la versión y otros.
Esto permitirá que la página se muestre correctamente en el equipo del cliente ya que en ocasiones hay disponibles diferentes versiones en el servidor.
Todo este proceso es invisible a los ojos del usuario y se efectúa con bastante rapidez.
Es posible mostrar algunos de los encabezados y la respuesta devuelta por el servidor, esto puede ser muy útil ya que tendremos información del servidor donde se aloja la página solicitada, pero además nos puede servir para agregarle utilidad a una página determinada y que los usuarios puedan ver su propia información, por ejemplo la dirección IP que tienen asignada en ese momento.


¿Cómo mostrar los encabezados a los usuarios de una página?


Para lograr que al usuario cargar una página determinada en su navegador, vea información propia, como la dirección IP, el host, su proveedor de internet, el puerto usado en su equipo, etc. lógicamente es necesario usar el lenguaje PHP.
PHP es un lenguaje de programación que a diferencia de otros como Javascript, se ejecuta del lado del servidor.

Requisitos para ver los encabezados o HTTP headers


Son necesarios tres requisitos.
✓ Que el servidor donde se almacene la página ofrezca soporte de PHP, cosa que la gran mayoría proporciona en la actualidad.
✓ Que el usuario tenga acceso al código fuente de la página web donde se desea mostrar la información.
✓ Que la pagina sea servida como PHP, o sea que tenga la extensión de archivo .PHP, en vez de HTML o de HTM.
Cumpliendo estos requerimientos el proceso es fácil.


Principales encabezados o HTTP headers usados


A continuación una lista de los principales encabezados web, que pueden resultar útiles para mostrar información a los lectores de nuestras páginas.
Más abajo veremos cómo utilizarlos.
'REMOTE_ADDR'
Muestra la dirección IP asignada al usuario que carga la página en su navegador.

'REMOTE_HOST'
El nombre del host del usuario.

'REMOTE_PORT'
El puerto empleado por el equipo del usuario, para comunicarse con el servidor web.

'HTTP_REFERER'
Dirección de la página anterior que dirige a la pagina actual.

'REQUEST_URI'
La URL que se empleo para acceder a la página, por ejemplo: "/index.html"

'HTTP_USER_AGENT'
Contenido de la cabecera User-Agent de la petición actual.
Consiste en una cadena que indica el agente de usuario del navegador web, contine varios datos como el modelo del navegador, la versión, sistema operativo, etc.

'HTTPS'
Ofrece un valor no vacío si el script es pedido mediante el protocolo HTTPS.

'SERVER_ADDR'
La dirección IP del servidor donde se está ejecutando actualmente el script.

'SERVER_NAME'
El nombre del host del servidor donde se está ejecutando actualmente el script.

'DOCUMENT_ROOT'
El directorio raíz de documentos del servidor en el cual se está ejecutando el script actual.

'SERVER_SOFTWARE'
Cadena de identificación del servidor dada en las cabeceras de respuesta a las peticiones.

'SERVER_PROTOCOL'
Nombre y número de revisión del protocolo de información a través del cual la página es solicitada, por ejemplo "HTTP/1.0".

'SERVER_ADMIN'
El valor de la directiva SERVER_ADMIN (de Apache) en el archivo de configuración del servidor web.

'REQUEST_METHOD'
Método de petición empleado para acceder a la página, puede ser cualquiera de los siguientes: GET, HEAD, POST, PUT.

'REQUEST_TIME'
Fecha Unix de inicio de la petición

'QUERY_STRING'
La cadena de la consulta de la petición de la página.

'HTTP_ACCEPT'
Contenido de la cabecera Accept de la petición actual.

'HTTP_ACCEPT_CHARSET'
Contenido de la cabecera Accept-Charset: de la petición actual, si existe. Por ejemplo: 'iso-8859-1,*,utf-8'.

'HTTP_ACCEPT_ENCODING'
Contenido de la cabecera Accept-Encoding de la petición actual, si existe. Por ejemplo: "gzip".

'HTTP_ACCEPT_LANGUAGE'
Contenido de la cabecera Accept-Language de la petición actual, si existe. Por ejemplo: "en", "es", etc.

'HTTP_CONNECTION'
Contenido de la cabecera Connection de la petición actual, si existe. Por ejemplo: "Keep-Alive".

'HTTP_HOST'
Contenido de la cabecera Host de la petición actual.

'SCRIPT_FILENAME'
La ruta del script ejecutándose actualmente en forma absoluta.

'SERVER_PORT'
El puerto de la máquina del servidor usado por el servidor web para la comunicación.

'SERVER_SIGNATURE'
Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas a las páginas generadas por el servidor.

'SCRIPT_NAME'
Contiene la ruta del script actual. Esto es de utilidad para las páginas que necesiten apuntarse a si mismas. La constante __FILE__ contiene la ruta absoluta y el nombre del archivo actual incluido.

'PHP_AUTH_DIGEST'
Esta variable tiene el valor de la cabecera "Authorization" enviada por el cliente (que entonces debe emplear para realizar la validación adecuada) si se ejecuta en Apache como módulo realizando la autentificación Digest HTTP.

'PHP_AUTH_USER'
Esta variable tiene el valor del nombre del usuario.

'PHP_AUTH_PW'
Esta variable tiene el valor de la contraseña proporcionada por el usuario, cuando en Apache o en IIS (ISAPI en PHP 5) se ejecuta un módulo de autentificación HTTP.

'AUTH_TYPE'
Esta variable tiene el valor del tipo de autentificación empleada, cuando en Apache se ejecuta un módulo de autentificación HTTP.

'PATH_INFO'
Contiene cualquier información sobre la ruta proporcionada por el cliente, a continuación del nombre del fichero del script actual, pero antecediendo a la cadena de la petición.

'ORIG_PATH_INFO'
Versión original de "PATH_INFO" antes de ser procesado por PHP.


Como escribir con PHP la dirección IP y otros encabezados de los visitantes


Para escribir el resultado de los encabezados tenemos que utilizar en PHP, la variable SERVER.
$_SERVER es una variable especial que incluye PHP que contiene toda la información del servidor web, es conocida como Superglobal.
En PHP todas las variables son antecedidas del signo del dólar: $
Para imprimir, o sea escribir el resultado de una variable se utiliza el comando ECHO de la siguiente forma:
<?php
echo $_VARIABLE['declaracion'];
?>

Un ejemplo práctico:
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
De la forma anterior se escribirá el agente de usuario del navegador usado.


Ejemplos prácticos


De una forma similar, usando la tabla como guía, se puede escribir cualquiera de la información necesaria o incluso combinar varias variables.

✔ Ejemplo del uso de varias variables
<?php 
echo "Tu dirección IP es: {$_SERVER['REMOTE_ADDR']}<br>";
echo "El servidor es: {$_SERVER['SERVER_NAME']}<br>"; 
echo "Vienes de la página: {$_SERVER['HTTP_REFERER']}<br>"; 
echo "Te has conectado usando el puerto: {$_SERVER['REMOTE_PORT']}<br>"; 
echo "El agente de usuario de tu navegador es: {$_SERVER['HTTP_USER_AGENT']}";
?>

✔ Utiliza el siguiente código para crear una tabla:
<?php
    echo '<table border="1">';
    foreach($_SERVER as $k => $v) {
        echo '<tr><td>'.$k.'</td><td>'.$v.'</td></tr>';
    }
    echo '</table>';
?>

✔ Crear página para obtener informacion del servidor:
<?php
echo <<<END
<!DOCTYPE html>
<meta charset="UTF-8" />
<title>\$_SERVER</title>
<style>
    table {
        border-collapse: collapse;
    }
    td {
        border: 1px solid #999;
        padding: 3px;
    }
</style>
<table>
END;
foreach ($_SERVER as $k => $v) {
    $key = htmlentities($k);
    $value = htmlentities($v);
    echo "\n\t<tr>\n\t\t<td>$key\n\t\t<td>$value\n";
}
echo "</table>";
?>

✔ Sacar la dirección IP detras de un Proxy:
<?php 
echo "Tu dirección IP es: {$_SERVER['HTTP_X_FORWARDED_FOR']}";
?>

✔ Redirecciona al usuario que utilice Internet Explorer a una página diferente:

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
header("Location: ie.html");
}
?>


Mas información en la red


php.net

Paginas relacionadas