2010-11-19 10 views
31

J'ai une page qui,php Actualiser la page actuelle?

Si une variable est définie (dans une session) il fera une action, il met à l'arrêt de la session.

Maintenant, il doit se rafraîchir.

C'est là que je suis coincé.

Existe-t-il un moyen d'obtenir l'URL exacte de la page en cours?

ou existe-t-il une fonction pour ce faire?

si header('location: ???');

Répondre

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

Si pas être désinfecté? – Alex

+9

$ _SERVER ['REQUEST_URI'] est une variable générée par le serveur. Seuls GET, POST, a et COOKIES sont sensibles aux interférences de l'utilisateur. (à l'exception possible des en-têtes comme "Referrer") –

+4

Ces variables générées par le serveur peuvent être modifiées, vous devriez donc toujours envisager de les désinfecter. –

6

$_SERVER['REQUEST_URI'] devrait fonctionner.

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

travaillera également

+1

Cela ne fonctionnera que si vous affichez le nom de fichier dans l'URL. Ainsi, la réécriture d'URL ne fonctionnera certainement pas. – rybo111

0

Un autre élégant est un

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

PHP rafraîchir la page en cours

avec le code PHP:

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

Remarque: N'oubliez pas que header() doit être appelé avant l'envoi d'une sortie réelle, que ce soit par des balises HTML normales, des lignes vides dans un fichier ou par PHP.

si vous envoyez une sortie, vous pouvez utiliser javascript:

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

Lorsque cette méthode reçoit une vraie valeur comme argument, Fera la page à recharger toujours du serveur. S'il est faux ou non spécifié, le navigateur peut recharger la page à partir de son cache.

Ou vous pouvez utiliser explicitement "meta refresh" (avec html pur):

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

Salutations et bon code,

+1

cela devrait être la réponse acceptée – user1855153