2013-03-27 9 views
7

utilizzando JS: (in <head> tag)window.location (JS) vs header() (PHP) per il reindirizzamento

if(something) { 
echo'<script>window.location="http://stackoverflow.com";</script>'; 
end(); 
} 

usando PHP: (in <head> tag)

if(something) { 
header('Location: http://stackoverflow.com'); 
end(); 
} 

Quale dovrei usare? oppure un'altra ?

e E a proposito di utilizzare<meta>?

<meta http-equiv="refresh" content="0;url=http://stackoverflow.com"/> 

Molte buone risposte, non so che rispondo io accetterò, Grazie tanto

+2

JavaScript reindirizza quando il documento viene caricato, i reindirizzamenti PHP quando PHP inizia a analizzare il codice PHP, i remoti di .htaccess (su server Apache) non appena arriva la richiesta. Prima si reindirizza il meglio e si ricorda di inviare il codice corretto (301 o 302 ecc.). – adeneo

+0

che dire di ''? @adeneo – l2aelba

+1

Evita il tag meta refresh come la peste. – adeneo

risposta

13

Il risultato è lo stesso per tutte le opzioni. Reindirizzare.

<meta> in HTML:

  • Mostra contenuto del tuo sito, e il prossimo utente reindirizzamento dopo pochi (o 0) secondi.
  • Non è necessario abilitare JavaScript.
  • Non serve il PHP.

window.location in JS:

  • JavaScript abilitato necessario.
  • Non serve il PHP.
  • Mostra il contenuto del tuo sito e il successivo reindirizza l'utente dopo alcuni (o 0) secondi.
  • Il reindirizzamento può dipendere da qualsiasi condizione if (1 === 1) { window.location.href = 'http://example.com'; }.

header('Location:') in PHP:

  • non hanno bisogno di JavaScript abilitato.
  • PHP necessario.
  • Il reindirizzamento verrà eseguito per primo, l'utente non vedrà mai cosa è dopo. header() deve essere il primo comando in php script, prima di produrre un altro. Se provi a trasmettere prima dell'intestazione, riceverai un Warning: Cannot modify header information - headers already sent
2

Il primo caso fallirà quando JS è spento. È anche un po 'più lento dal momento che JS deve essere analizzato per primo (il DOM deve essere caricato). Tuttavia JS è più sicuro poiché la destinazione non conosce il referente e il tuo reindirizzamento potrebbe essere tracciato (i referer non sono affidabili in generale, ma questo è qualcosa).

È inoltre possibile utilizzare il tag meta refresh. Richiede anche il caricamento del DOM.

3

I reindirizzamenti PHP sono migliori se è possibile, come con il codice JavaScript, il client sta caricando la pagina prima del reindirizzamento, mentre con quella PHP invia l'intestazione corretta.

Tuttavia il PHP non dovrebbe andare nella testa >, dovrebbe andare prima che qualsiasi output sia inviato al client, in quanto altrimenti causerà errori.

Utilizzo di < I tag meta > hanno lo stesso problema di Javascript nel causare il caricamento della pagina iniziale prima di eseguire il reindirizzamento. I reindirizzamenti sul lato server sono quasi sempre migliori, se è possibile utilizzarli.

+0

Ma io pud JS in '' e io usando 'end();' (PHP) dopo che – l2aelba

+2

Realmente dovresti fare quanto più possibile del tuo PHP prima di inviare qualsiasi output al browser. Se provi a fare cose che coinvolgono intestazioni (come i reindirizzamenti) dopo l'invio dell'output, questo causerà un errore "impossibile modificare le informazioni dell'intestazione". – krisnoble

8

Un modo migliore per impostare la posizione in JS è via:

if(something){ 
    window.location.href = 'http://www.site.com/'; 
} 

se utilizzare PHP o JS per gestire il reindirizzamento dipende da ciò che il codice sta facendo e in che modo. Ma se sei in grado di utilizzare PHP; cioè, se stai usando PHP per inviare qualche codice JS al browser che dice semplicemente al browser di andare da qualche altra parte, allora la logica suggerisce che dovresti ritagliare il middle man e dirlo al browser direttamente tramite PHP.

8

Dipende da come e quando si desidera reindirizzare l'utente a un'altra pagina.

Se si desidera reindirizzare immediatamente un utente a un'altra pagina senza che venga visualizzato alcunché di un sito in mezzo, è necessario utilizzare il metodo di reindirizzamento PHP header.

Se si dispone di un Javascript e , alcune azioni dell'utente devono comportare l'inserimento di un'altra pagina, ovvero quando è necessario utilizzare window.location.

L'aggiornamento del tag meta viene spesso utilizzato nei siti di download quando vengono visualizzati questi messaggi "Il download deve essere avviato automaticamente". Puoi lasciare che l'utente carichi una pagina, attendi per un certo periodo di tempo, quindi reindirizza lo (ad es. In un file da scaricare) senza Javascript.