Redirection de page après un certain temps PHP

94

Il existe une certaine fonction PHP pour la redirection après un certain temps. Je l'ai vu quelque part mais je ne m'en souviens plus. C'est comme la redirection gmail après la connexion. S'il vous plaît, quelqu'un pourrait-il me le rappeler?

Afaolek
la source
@zerkms: On dirait qu'il y a plusieurs façons de le faire.
Wesley Murch
2
@Wesley Murch: l'en- Refreshtête n'est pas standard. Je n'utiliserais jamais des choses qui ne sont pas couvertes par les RFC
zerkms
stackoverflow.com/questions/18305258/… m'a conduit à stackoverflow.com/questions/283752/refresh-http-header qui dit qu'en plus d'être non standard, l'en-tête d'actualisation provoque également des problèmes de performances dans Internet Explorer.
Edward

Réponses:

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

c'est la façon php de définir headerce qui vous redirigera wherever.phpdans 5 secondes


Rappelez-vous que header () doit être appelé avant l'envoi de toute sortie réelle, soit par des balises HTML normales, des lignes vides dans un fichier ou depuis PHP. C'est une erreur très courante de lire du code avec des fonctions include, ou require, ou une autre fonction d'accès aux fichiers, et d'avoir des espaces ou des lignes vides qui sont générés avant l'appel de header (). Le même problème existe lors de l'utilisation d'un seul fichier PHP / HTML. (source php.net )

Teneff
la source
1
intéressant je n'ai jamais vu cette méthode auparavant ... mais cela ne va-t-il pas afficher une page vierge ou simplement inactif sans aucun message jusqu'à ce que le minuteur soit écoulé?
Ibu
il va afficher la page ... tout ce qu'il fait est de définir l'en-tête qui dira au navigateur de rafraîchir la page en 5 secondes, si vous voulez vraiment afficher une page vierge, utilisez simplementdie();
Teneff
2
La mauvaise chose à ce sujet est que cet en-tête n'est pas dans le standard HTTP, les clients sont libres de l'ignorer.
Sven
:) Bonne idée! Et si vous souhaitez envoyer (conserver) certaines variables et les utiliser dans la page rechargée?
Mugur Ungureanu
Cela fait peut-être un milliard d'années depuis ce post, mais comment publier un message pendant la redirection comme peut-être "Redirection de la page, veuillez patienter"
CAO
25

Vous pouvez utiliser javascript pour rediriger après un certain temps

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

},5000); // 5 seconds
Ibu
la source
11
La question était pour PHP
Benjamin Intal
5
@Jami c'est vrai, c'est pourquoi j'ai dit que l'OP pouvait utiliser javascript à la place.
Ibu
@BenjaminIntal Cela fonctionne également comme une solution de secours si le navigateur ignore une redirection dans l'en-tête. Vous devrez utiliser un navigateur qui n'accepte pas l'en-tête ET désactiver Javascript pour ne pas recevoir la redirection.
Super Cat
18

Vous pouvez essayer ceci:

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

Où 10 est en secondes.

Royrui
la source
11

vous voudriez utiliser php pour écrire une balise meta.

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

Ce n'est pas recommandé mais c'est possible. Le 5 dans cet exemple est le nombre de secondes avant qu'il ne s'actualise.

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

en effet, vous pouvez utiliser ce code comme l'a dit teneff, mais vous n'avez pas nécessairement à mettre l'en-tête avant toute sortie envoyée (cela produirait une "erreur ne peut pas déplacer l'en-tête ....: 3").

Pour résoudre ce problème, utilisez la fonction php ob_start();avant la sortie de tout code HTML.

Pour terminer l'ob, mettez simplement ob_end_flush();après que vous n'ayez aucune sortie html.

à votre santé!

JJJack
la source
2

Si vous effectuez une redirection avec PHP, vous utiliserez simplement la commande sleep () pour dormir pendant le nombre de secondes avant la redirection.

Mais, je pense que vous faites référence à la balise meta refresh:

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

Jason Palmer
la source
L'utilisation du sommeil n'est pas l'approche conventionnelle, comme il est dit ci-dessus, la fonction d'en-tête doit être utilisée.
Maksim
Le sommeil ne retarde-t-il pas simplement la connexion?
FluorescentGreen5
2

L'actualisation de PHP après 5 secondes ne fonctionnait pas pour moi lors de l'ouverture d'une boîte de dialogue Enregistrer sous pour enregistrer un fichier: (header ('Content-type: text / plain'); header ("Content-Disposition: attachment; filename = $ filename > ");)

Une fois que le lien Enregistrer sous a été cliqué et que le fichier a été enregistré, l'actualisation minutée s'est arrêtée sur la page d'appel.

Cependant, merci beaucoup, la solution javascript d'ibu a continué à cocher et à actualiser ma page Web, ce dont j'avais besoin pour mon application spécifique. Merci donc à ibu d'avoir publié une solution javascript au problème php ici.

Vous pouvez utiliser javascript pour rediriger après un certain temps

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

Vous pouvez utiliser ce code javascript pour rediriger après une heure spécifique. J'espère que cela fonctionnera.

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

},10000); // 10 seconds
Prodip Kirtania
la source