Mar 16, 2010
Cuidado con $_SERVER['HTTP_REFERER']
Bueno escribo este tip PHP por que es algo con los que todos nos topamos alguna vez, la variable global $_SERVER nos trae una serie de valores utiles a la hora de conseguir información de la conexión o el cliente al que estamos conectados, puede decirnos a que dominio nos estan visitando, desde que ip, con que navegador y etc.
El tema es que hay un indice de este array que suele causar problemas la referencia desde donde viene el pedido o el “HTTP_REFERER”.
Algunos conocen la aún mas problematica variable global $HTTP_REFERER, que puede estar como que no, dependediendo de la versión de PHP.
Primero y antes de que nada hay que tener en cuenta que no podemos usar esta variable para algo mas que no sea estadísticas, o en casos precesitos, como no servir la descarga de un archivo de una, sin haber pasado por su pagina de presentación o etc. Pero nunca la debemos usar para validaciones o como medida de seguridad ya que es altamente falsificable.
Pero sungamos que queremos saber si el visitante vino de Google, entoces podemos leer esta variable, el problema esta en que no siempre existe.
cuando uno hace:
$referer = $_SERVER['HTTP_REFERER'];
Puede encontrarse con un error de variable no definida o similar, esto es por que aunque es una variable global, no en todos los casos esta, si el servidor web no devuelve un referer, esta variable no devuelve false, 0 o null, sino que directamente no existe.
Para usar bien esta variable en realidad primero hay que ver si existe, y luego tomar el valor, asi que podemos hacer es:
$http_referer = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:null;
De esta forma tendremos la varible $http_referer que nos devolvera null comportandose tambien como “false” en las comparaciones.
Cualquier problema puedes dejarlo en los comentarios. Espero que les sea útil.
Tips relacionados:

Ultimos comentarios