Reindirizzamento della pagina dopo un certo tempo PHP


94

C'è una certa funzione PHP per il reindirizzamento dopo un po 'di tempo. L'ho visto da qualche parte ma non ricordo. È come il reindirizzamento di Gmail dopo l'accesso. Per favore, qualcuno può ricordarmelo?


@zerkms: Sembra che ci siano un paio di modi per farlo.
Wesley Murch

2
@Wesley Murch: l' Refreshintestazione non è standard. Non
userei

stackoverflow.com/questions/18305258/… mi ha portato a stackoverflow.com/questions/283752/refresh-http-header che dice che oltre a non essere standard, l'intestazione di aggiornamento causa anche problemi di prestazioni in Internet Explorer.
Edward

Risposte:


229
header( "refresh:5;url=wherever.php" );

questo è il modo php per impostare headerche ti reindirizzerà a wherever.phpin 5 secondi


Ricorda che header () deve essere chiamato prima che qualsiasi output effettivo venga inviato, o tramite normali tag HTML, righe vuote in un file o da PHP. È un errore molto comune leggere codice con funzioni include, o require, o un'altra funzione di accesso ai file e avere spazi o righe vuote che vengono emesse prima che venga chiamato header (). Lo stesso problema esiste quando si utilizza un singolo file PHP / HTML. (fonte php.net )


1
interessante non ho mai visto questo metodo prima ... ma non mostrerà una pagina vuota o semplicemente inattivo senza alcun messaggio fino allo scadere del tempo?
Ibu

sta per visualizzare la pagina ... tutto ciò che fa è impostare l'intestazione che dirà al browser di aggiornare la pagina in 5 secondi, se vuoi davvero visualizzare la pagina vuota usa semplicementedie();
Teneff

2
La cosa negativa di questo è: questa intestazione non è nello standard HTTP, i client sono liberi di ignorarla.
Sven

:) Buona idea! E se vuoi inviare (conservare) alcune variabili e utilizzarle nella pagina ricaricata?
Mugur Ungureanu

è forse un miliardo di anni da questo post, ma come si pubblica un messaggio durante il reindirizzamento come forse "Pagina di reindirizzamento, attendere prego"
CAO

25

Puoi usare javascript per reindirizzare dopo un po 'di tempo

setTimeout(function () {
   window.location.href= 'http://www.google.com'; // the redirect goes here

},5000); // 5 seconds

11
La domanda era per PHP
Benjamin Intal

5
@ Jami è vero, ecco perché ho detto che l'OP può usare invece javascript.
Ibu

@BenjaminIntal Funziona anche come un ottimo fallback se il browser ignora un reindirizzamento nell'intestazione. Dovresti usare un browser che non accetta l'intestazione E avere Javascript disabilitato per non ricevere il reindirizzamento.
Super Cat

18

Puoi provare questo:

header('Refresh: 10; URL=http://yoursite.com/page.php');

Dove 10 è in secondi.


11

vorresti usare php per scrivere un meta tag.

<meta http-equiv="refresh" content="5;url=http://www.yoursite.com">

Non è consigliato ma è possibile. Il 5 in questo esempio è il numero di secondi prima che si aggiorni.


3
header( "refresh:5;url=wherever.php" );

in effetti puoi usare questo codice come ha detto teneff, ma non devi necessariamente mettere l'intestazione prima dell'output inviato (questo produrrebbe un errore "impossibile riposizionare l'intestazione ....: 3").

Per risolvere questo problema, utilizzare la funzione php ob_start();prima che venga emesso qualsiasi HTML.

Per terminare l'ob basta metterlo ob_end_flush();dopo che non hai alcun output html.

Saluti!



2

L'aggiornamento di PHP dopo 5 secondi non ha funzionato quando ho aperto una finestra di dialogo Salva con nome per salvare un file: (header ('Content-type: text / plain'); header ("Content-Disposition: attachment; filename = $ filename > ");)

Dopo che è stato fatto clic sul collegamento Salva con nome e il file è stato salvato, l'aggiornamento a tempo si è interrotto nella pagina chiamante.

Tuttavia, grazie mille, la soluzione javascript di ibu continuava a ticchettare e aggiornare la mia pagina web, che è ciò di cui avevo bisogno per la mia specifica applicazione. Quindi grazie ibu per aver pubblicato la soluzione javascript al problema php qui.

Puoi usare javascript per reindirizzare dopo un po 'di tempo

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds

2

Puoi utilizzare questo codice javascript per reindirizzare dopo un tempo specifico. Spero che funzioni.

setRedirectTime(function () 
{
   window.location.href= 'https://www.google.com'; // the redirect URL will be here

},10000); // 10 seconds
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.