2011-11-15 22 views
23

¿Cómo puedo redireccionar a la misma página usando PHP?Cómo redirigir a la misma página en PHP

Por ejemplo, localmente mi dirección web es:

http://localhost/myweb/index.php 

Cómo puedo redirigir dentro de mi página web a otra página, por ejemplo:

header("Location: clients.php"); 

Sé que esto puede estar equivocado, pero hacer yo realmente necesito poner todo? ¿Qué pasa si más adelante no es http://localhost/?

¿Hay alguna manera de hacer algo como esto? Además, tengo un montón de código y luego, al final, después de que se termine de procesar algún código ... Estoy intentando redirigir usando eso. ¿Eso esta bien?

+0

posible duplicado de [Cómo hacer una redirección en PHP?] (Http: //stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php) –

+0

¿Qué tiene esto que ver con "la misma página"? –

+0

Para la "misma página" encontré la respuesta aquí la más robusta: http://stackoverflow.com/questions/4221116/php-refresh-current-page – eselk

Respuesta

9

Hay un número de diferentes $_SERVER (docs) propiedades que devuelven información sobre la página actual, pero mi método preferido es usar $_SERVER['HTTP_HOST']:

header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location); 

donde $location es el camino después del dominio, a partir de /.

+0

excelente gracias – user710502

+0

No estoy seguro de por qué no está redirigiendo, tal vez lo hice mal? $ location = '/index.php'; header ("Ubicación:". "Http: //". $ _SERVER ['HTTP_HOST'].$ ubicación); – user710502

+1

Para la depuración, simplemente envíe esa cadena con 'echo' en lugar de' header'. Si es correcto, entonces algo más está mal (los encabezados deben ser la ** primera ** salida en la página, por ejemplo). – Nicole

60

Mi método preferido para volver a cargar la misma página es $ _SERVER [ 'PHP_SELF']

header('Location: '.$_SERVER['PHP_SELF']); 
die; 

No se olvide de morir o salir después de su cabecera();

Editar: (Gracias @RafaelBarros)

Si la cadena de consulta también es necesario, utilice

header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); 
die; 
+5

esto es lo que estaba buscando, ¡gracias! – Mala

+6

Si la cadena de consulta también es necesaria, use 'header ('ubicación:'. $ _ SERVER ['PHP_SELF']. '?'. $ _ SERVER ['QUERY_STRING']); salir; '. –

+2

@RafaelBarros Gracias por eso, he editado mi respuesta para incluir su sugerencia. –

17

Otra elegante es

header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"); 
exit; 
5

Para ser realmente universales, estoy usando esto:

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' 
    || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://'; 
header('Location: '.$protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]); 
exit; 

Me gusta $_SERVER[REQUEST_URI] porque restablece mod_rewrite y/o cualquier variable GET.

https detección de https://stackoverflow.com/a/2886224/947370

1
header('Location: '.$_SERVER['PHP_SELF']); 

también trabajar

-2

utilizo correctamente en localhost:

header('0'); 
+0

Esto no recarga la página. – rybo111

Cuestiones relacionadas