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?


@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 )


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

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.


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.


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é!


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


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.