2010-06-29 8 views
13

Estoy intentando redirigir de una página a otra sin perder los parámetros.

p. Ej. si tengo una página page.php? param1 = 1 & param2 = 2, ¿cuál es la forma más fácil de extraer "param1 = 1 & param2 = 2"?

Respuesta

33

Uso $_SERVER['QUERY_STRING'] para acceder a todo lo que después el signo de interrogación.

lo tanto, si usted tiene la url:

http://www.sample.com/page.php?param1=1&param2=2 

entonces esto:

$url = "http://www.sample.com/page2.php?".$_SERVER['QUERY_STRING']; 
echo $url; 

volverá:

http://www.sample.com/page2.php?param1=1&param2=2 
5

yo haría

$querystring = '?' 
foreach($_GET as $k=>$v) { 
    $querystring .= $k.'='.$v.'&'; 
} 
$url .= substr($querystring, 0, -1); 

donde $url ya contiene todo antes de la?

también se podría utilizar $_SERVER['QUERY_STRING'] pero según el manual de PHP:

$ _SERVER es una matriz que contiene información tal como cabeceras, rutas y ubicaciones de scripts. Las entradas en esta matriz son creadas por el servidor web. * No hay garantía de que cada servidor web proporcione alguno de estos; los servidores pueden omitir algunos, o proporcionar otros que no se enumeran aquí. *

+1

Eso es técnicamente cierto, pero cualquier servidor web que esté utilizando casi con certeza proporciona '$ _SERVER ['QUERY_STRING']'; la mayoría de los sistemas basados ​​en PHP dependen de que exista –

+0

Y es fácilmente comprobable. – Kzqai

+0

esto tampoco representará arreglos como: 'key [innerkey] = value'. te conseguirá: 'key = Array' – ivoba

7

$_SERVER['QUERY_STRING']

Source

7

Además de respuesta Robs:

Puede use http_build_query y $ _GET.
Esto es incorporado y puede tratar con matrices.
También puede manipular fácilmente los parámetros GET de esta manera, antes de volver a unirlos.

unset($_GET['unsetthis']); 
$query = http_build_query($_GET); 
Cuestiones relacionadas