2011-11-15 33 views
23

Come posso reindirizzare alla stessa pagina usando PHP?Come reindirizzare alla stessa pagina in PHP

Ad esempio, a livello locale il mio indirizzo web è:

http://localhost/myweb/index.php 

Come posso reindirizzare all'interno del mio sito web ad un'altra pagina, dire:

header("Location: clients.php"); 

So che questo potrebbe essere sbagliato, ma devo davvero bisogno di mettere il tutto? Cosa succede se in seguito non è http://localhost/?

C'è un modo per fare qualcosa di simile? Inoltre, ho un sacco di codice e poi alla fine, dopo aver finito di elaborare del codice ... Sto tentando di reindirizzare usando quello. È ok?

+0

possibile duplicato di [Come fare un redirect in PHP?] (Http: //stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php) –

+0

Che cosa ha a che fare con "stessa pagina"? –

+0

Per "stessa pagina" ho trovato la risposta più solida: http://stackoverflow.com/questions/4221116/php-refresh-current-page – eselk

risposta

9

ci sono un certo numero di diversi $_SERVER (docs) proprietà che restituiscono informazioni sulla pagina corrente, ma il mio metodo preferito è quello di utilizzare $_SERVER['HTTP_HOST']:

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

dove $location è il percorso dopo il dominio, a partire da /.

+0

eccellente grazie – user710502

+0

Non sono sicuro del motivo per cui non sta reindirizzando, forse ho sbagliato? $ location = '/index.php'; intestazione ("Posizione:". "Http: //". $ _SERVER ['HTTP_HOST'].$ Posizione); – user710502

+1

Per il debug, è sufficiente emettere quella stringa con 'echo' invece di' header'. Se è corretto, allora qualcos'altro è sbagliato (le intestazioni devono essere il ** primo ** output sulla pagina, per esempio.) – Nicole

60

Il mio metodo preferito per ricaricare la stessa pagina è $ _SERVER [ 'PHP_SELF']

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

Non dimenticare di morire o uscita dopo l'intestazione();

Edit: (Grazie @RafaelBarros)

Se la stringa di query è anche necessario, utilizzare

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

questo è quello che stavo cercando, grazie! – Mala

+6

Se anche la stringa di query è necessaria, utilizzare 'header ('location:'. $ _ SERVER ['PHP_SELF']. '?'. $ _ SERVER ['QUERY_STRING']); uscita; '. –

+2

@RafaelBarros Grazie per questo, ho modificato la mia risposta per includere il tuo suggerimento. –

17

Un'altra elegante uno è

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

Per essere veramente universale, sono utilizzando questo:

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

Mi piace $_SERVER[REQUEST_URI] perché restituisce mod_rewrite e/o qualsiasi variabile GET.

https rilevamento da https://stackoverflow.com/a/2886224/947370

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

lavorerà anche

-2

Io uso correttamente in localhost:

header('0'); 
+0

Questo non ricarica la pagina. – rybo111

Problemi correlati