$PHP_SELF y variables get

Quiero que el php pille la dirección url entera. Con el $PHP_SELF pilla la dirección pero no el resto de contenido después del "?". Me interesa para mantener las variables exactamente igual.
¿Se puede hacer?
Respuesta
1
Todas las variables se pasan a través de POST o GET. PHP crea un array con las variables que se pasan entre páginas. Por ejemplo, imagina una web que envía en la URL:
prueba.php?variable1=prueba&variable2=232
Para recuperar la página puedes utilizar $PHP_SELF, pero cada variable la tienes que recuperar desde el array $_GET. $_GET{"variable1"} y $_GET{"variable2"}
Si quieres componer la dirección completa lo puedes hacer:
$url = $PHP_SELF . "?variable1=" . $_GET{"variable1"}."&variable2=" . $_GET{"variable2"};
Eso es todo.

6 respuestas más de otros expertos

Respuesta
1
Ok si lo que deseas es eso usa la siguiente variable $REQUEST_URI, aquí te prepare un código para que veas la diferencia, espero te sirva:
<?php
echo $PHP_SELF." -- SELF<br>";
echo $REQUEST_URI." -- REQUEST";
?>
<form action="" method="get" name="prueba">
<a href="prueba2?valor=casa&valor2=cosa">Envio variables</a>
</form>
A ver si me comentas como te fue
Respuesta
1
No se si hay una solución más directa, pero puedes construir una función que te construya la URL como la quieres concatenando $PHP_SELF con las variables $_GET; algo así como:
$parametros = array();
$variablesGET = array_keys($_GET);
for ($i=0; $i<count($variablesGET); $i++)
$parametros[] = $variablesGET[$i].'='.$_GET[$variablesGET[$i]];
if (count($parametros>0))
$url = $PHP_SELF.'?'.implode('&', $parametros);
Respuesta
1
Ante todo perdón por el retraso.
A ver, con $PHP_SELF, puede hacerse, ¿Pero esta solo te coge la dirección antes del?, tendrías get usar el método GET para recoger las variables y componer la dirección
($PHP_SELF.'?'.'variable1='.$variable1.'...')
Un metodo mas sencillo consistiria en que uses en lugar de $PHP_SELF la variable $REQUEST_URI.
Respuesta
1
Si quieres obtener las variables, ya conocidas, debes utilizar $_GET["nombrevariable"], con lo que no tienes más que reasignarlas otra vez al generar la URL. Por ejemplo:
<a href="hoja.php?variable1=<?php print($_GET["variable1"]); ?>&variable2=<?php print($_GET["variable22]); ?>">
Etc.
En cambio si te pasan una URL pero no tienes ni idea de qué variables pueden venir y quieres volver a imprimir todo el querystring tal cual estaba, puedes utilizar esto:
$_SERVER["QUERY_STRING"]
Creo que funciona así... prueba a hacer un print() de eso pasándole a una hoja unos cuantos parámetros a ver qué devuelve, y según eso ya luego tu generas la URL.
Respuesta
1
Lo que puede hacer es crearte una cadena de texto con las variables.
1,. Las recoges
$tal=$_get["tal"];
...
Y luego las concatenas
$dir=$php_self."&tal=".$tal."&tal2".$tal2 ....
Respuesta
1
Te contesto sin tener a mano un servidor con php.
Hay una variable que guarda la url completa pero no la recuerdo.
Puedes hacer un phpinfo(); y buscar tu url. A la izquierda tienes el nombre de la variable que la almacena.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas