2010-11-19 21 views
31

Tengo una página quephp actualizar página actual?

Si se establece una variable (en una sesión) que va a hacer una acción, luego lo elimina de la sesión.

Ahora tiene que actualizarse.

Aquí es donde estoy atascado.

¿Hay alguna manera de obtener la URL exacta de la página actual?

o hay una función para hacer esto?

por lo header('location: ???');

Respuesta

70
header('Location: '.$_SERVER['REQUEST_URI']); 
+0

¿No debería ser desinfectados? – Alex

+9

$ _SERVER ['REQUEST_URI'] es una variable generada por el servidor. Solo GET, POST, a y COOKIES son susceptibles a la interferencia del usuario. (con la posible excepción de encabezados como "Referente") –

+4

Esas variables generadas por el servidor se pueden modificar, por lo que aún debe considerar desinfectarlas. –

6

$_SERVER['REQUEST_URI'] debería funcionar.

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

también funcionará

+1

Esto solo funcionará si muestra el nombre de archivo en la URL. Por lo tanto, la reescritura de URL definitivamente no funcionará. – rybo111

0

Otra elegante uno es

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

PHP actualización de la página actual

Con el código PHP:

<?php 
$secondsWait = 1; 
header("Refresh:$secondsWait"); 
echo date('Y-m-d H:i:s'); 
?> 

Nota: Recuerde que debe llamarse al encabezado() antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo o desde PHP.

si envía ninguna salida, se puede usar javascript:

<?php 
echo date('Y-m-d H:i:s'); 
echo '<script type="text/javascript">location.reload(true);</script>'; 
?> 

Cuando este método recibe un valor verdadero como argumento, que hará que la página que siempre puede volver a cargar desde el servidor. Si es falso o no se especifica, el navegador puede volver a cargar la página desde su caché.

O puede utilizar de forma explícita "meta refresh" (con html puro):

<?php 
$secondsWait = 1; 
echo date('Y-m-d H:i:s'); 
echo '<meta http-equiv="refresh" content="'.$secondsWait.'">'; 
?> 

Saludos y buen código,

+1

esta debería ser la respuesta aceptada – user1855153

Cuestiones relacionadas