Obtener la URL actual con PHP

Es bastante probable que cuando estemos desarrollando en PHP nos podamos encontrar con la necesidad de obtener la URL de la página actual, ya sea para guardarla en una variable, hacer algún tipo de comparación de seguridad para evitar que un sistema se introduzca en otro dominio… La cuestión es que puede ser muy útil obtener la URL actual con PHP y de eso va esta pequeña entrada.

Para ello vamos a utilizar el array $_SERVER, el cual contiene información como cabeceras, rutas y ubicaciones de nuestro script.

Aunque las entradas de este array las proporciona el servidor, puede ser que algunos servidores no revelen alguna información, aunque de forma general siempre se ofrecen las esenciales.

Si quieres saber un listado completo de todos los indices del array $_SERVER puedes hacerlo desde php.net

Nosotros para obtener la url necesitamos solo dos de ellos tal y como vemos en el siguiente ejemplo:

$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $url;

 Simplemente con esto podemos obtener la url completa de nuestro script, donde:

  • $_SERVER[‘HTTP_HOST’] nos sirve para obtener el nombre del dominio
  • $_SERVER[‘REQUEST_URI’] nos sirve para obtener la uri.

Ahora pensemos en que queremos hacer un pequeño sistema anticopy de nuestra aplicación, de tal modo que imaginemos que el hosting es precisamente el de esta web: http://mialtoweb.com, si el script determinará que la url donde se encuentra la web podría reaccionar mandando un mail al proveedor, bloqueando el sistema o de cualquier forma que se nos ocurriera, aunque precario es un primer paso para la seguridad de nuestras aplicaciones, y todo con un simple if…

$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

if ($url != 'http://mialtoweb.com'){
	//este código se ejecuta si la url no es la esperada
	//pudiendo bloquearla, mandar un mail, borrarla...
}

Espero que os sirva este pequeño truco y que nunca se os activa ese if… si tenéis algún otro uso para $_SERVER podéis compartirlo como un comentario.