- Detalles
- Por Juan Padial
- En Programación
- Visto: 8460
Puede que alguna vez necesites obtener la URL de la página actual que es mostrada en la ventana del navegador. Motivos y situaciones que requieran conocer la URL exacta solicitada se me ocurren miles. Tantos que ahora no soy capaz de ponerte un ejemplo claro y tonto.
Sea cual tu motivo, voy a mostrar una pequeña función que permite obtener la URL de entrada utilizando PHP y otra que sólo devuelve el nombre del script ejecutado. Vamos a utilizar la variable superglobal $_SERVER.
Si nunca has trabajado con la superglobal $_SERVER puede que te sea útil repasar el manual PHP antes de seguir. Puedes verlo online aquí.
Vayamos al grano. En la página en la que quieras obtener la URL añade este código:
<?php
function PageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
Ahora podrás obtener la URL de la página actual con una simple línea:
<?php echo PageURL(); ?>
En ocasiones es necesario obtener sólo el nombre del script ejecutado, es decir, el archivo PHP que está ejecutándose. Esto se puede obtener con el siguiente código:
<?php
function PageName() {
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
}
echo "El nombre de la pagina es ".PageName();
?>
Ejemplo: Prueba el siguiente código. Guárdalo en un arhivo php con el nombre que tu quieras, ponlo en tu servidor y accede a él. Si lo guardas, por ejemplo, con el nombre "url.php", y lo guardas en el directorio raíz de tu sitio podrás acceder a él a través de domino.com/url.php, verás como si accedes con otras versiones, como "domino.com/url.php?parametro=loquesea", estos añadidos también se mostrarán como valor de la URL actual. Sin embargo el script ejecutado seguirá siendo el mismo siempre. Ten en cuenta que el texto que va después de "#" en las URL sólo se interpreta en los navegadores y nunca es enviado al servidor por lo que "domino.com/url.php#algo" seguirá dando como URL "domino.com/url.php#algo".
<?php
function PageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
function FileName() {
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
</head>
<body>
<p>La URL utilizada es: <?php echo PageURL();?>.</p>
<p>El archivo ejecutado es: <?php echo FileName();?>.</p>
</body>
</html> Creado el 19 05 2011 Actualizado el 11 10 2012
