Temporiser un header("Location: ***");

Temporiser un header("Location: ***"); - PHP - Programmation

Marsh Posté le 18-07-2005 à 13:27:40    

Bonjour,
 
A la fin d'un de mes scripts je voudrais effectuer une temporisation(5 secondes) avant le refresh automatique de la page.
 
 
j'ai essayé
 
<?
ob_start();
[...] // PHP + HTML ~100 lignes
sleep(5);
header("Location: mapage.php" );
ob_end_flush;
?>
 
Mais sans succès, en effet, au lancement de mapage.php, la page tente de se charger(la barre de progression progresse), mais gèle sur la fin !
Un refresh par l'intermédiaire de META ou de javascript ne m'intéresse pas, car elle est moins discrète(barre de progression + petit clic).
 
Merci

Reply

Marsh Posté le 18-07-2005 à 13:27:40   

Reply

Marsh Posté le 18-07-2005 à 13:32:02    

Impossible en PHP : meta ou javascript pas d'autre moyen.

Reply

Marsh Posté le 18-07-2005 à 14:04:14    

header("Refresh CONTENT=\"10; URL=http://xxx/\"" );

Reply

Marsh Posté le 18-07-2005 à 14:17:09    

huhu je connaissais pas :)
La bonne syntax :

Code :
  1. <?php header("Refresh: 10; URL=http://site" ); ?>
  2. Code HTML ...

Reply

Marsh Posté le 18-07-2005 à 14:57:04    

OK, Merci. Ca marche !

Reply

Marsh Posté le 18-07-2005 à 15:03:31    

Si je peux me permettre une question, c'est quoi l'intérêt ?
Un timer en Meta avec un message de validation par exemple, pourquoi pas, mais l'intérêt de bloquer l'envoie d'un header, à part faire patienter inutilement le visiteur, je vois pas.
Mais j'ai peut-être oublier un cas de figure où ça pourrait servir, c'est pour ça que je demande. :D

Reply

Marsh Posté le 18-07-2005 à 15:23:00    

stb a écrit :

header("Refresh CONTENT=\"10; URL=http://xxx/\"" );


 
Ca revient pas strictement au meme que d'envoyer directement un <meta> pour reafficher la page par hasard???

Reply

Marsh Posté le 18-07-2005 à 15:23:46    

meta = caca :o Vaut mieux faire ça côté serveur :o

Reply

Marsh Posté le 18-07-2005 à 15:24:20    

Dans la mesure du possible, utiliser de vrais redirection HTTP (via header), qu'une solution bâtarde qui coupe genre bouton précédent avec un meta à la noix

Reply

Marsh Posté le 18-07-2005 à 15:28:50    

Florent, tu peux m'expliquer l'avantage de l'un sur l'autre parceque ca a l'air d'obtenir strictement le meme résultat ?  
NB: Je te crois hein, c'est pas ca le problème, j'aime juste comprendre les trucs plutot que de faire les trucs betement :)

Reply

Marsh Posté le 18-07-2005 à 15:28:50   

Reply

Marsh Posté le 18-07-2005 à 15:32:28    

Ben déjà, je vois pas l'interêt d'envoyer une page complète avec un pauvre meta. Envoyer une redirection HTTP est plus mieux. Ensuite, de manière générale, les meta cassent le bouton précédent : tu va en arrière, et cash t'es redirigé -> aïe aïe aïe. Le meta est plus une solution bricolage qu'autre chose :/ Moreover, le meta sert lorsqu'on n'a pas de serveur (genre le fichier est ouvert à partir du disque-dur. C'est à ça que servent les meta http-equiv, de manière générale. Pas pour faire des redirections ou autre. C'est le boulot du serveur)

Reply

Marsh Posté le 18-07-2005 à 15:34:30    

That makes sense to me  :jap:

Reply

Marsh Posté le 18-07-2005 à 15:44:08    


Tu fais comment une redirection sur une page web sans Meta et sans JS ? [:at war with emo]

Reply

Marsh Posté le 18-07-2005 à 15:44:32    

header();

:o

Reply

Marsh Posté le 18-07-2005 à 15:45:09    

Les redirections JS ou meta sont le plus souvent un signe d'une mauvaise conception de la chose ;)

Reply

Marsh Posté le 18-07-2005 à 15:45:46    

La solution est donnée des le 3eme post quand meme ...

Reply

Marsh Posté le 18-07-2005 à 15:46:50    

Accessoirement, oui :D

Reply

Marsh Posté le 18-07-2005 à 15:55:47    

Je propose une solution alternative.. enfin a debattre.. pourquoi pas faire:

Code :
  1. code
  2.   code
  3.    code...
  4. flush();
  5. sleep();
  6. header();


---------------
triste époque ou il est plus difficile de casser un préjugé qu'un atome(A.Einstein)
Reply

Marsh Posté le 18-07-2005 à 16:01:09    

test

Reply

Marsh Posté le 18-07-2005 à 16:01:51    

FlorentG a écrit :

Les redirections JS ou meta sont le plus souvent un signe d'une mauvaise conception de la chose ;)


Bah si on prend par exemple le forum MD.
Quand tu postes un message, il y a un message qui te dit que ton post a bien été pris en compte et zou. A ce moment là, il y a redirection par Meta, comment faire autrement ?

Reply

Marsh Posté le 18-07-2005 à 16:03:37    

The-Shadow a écrit :

Bah si on prend par exemple le forum MD.
Quand tu postes un message, il y a un message qui te dit que ton post a bien été pris en compte et zou. A ce moment là, il y a redirection par Meta, comment faire autrement ?


Code :
  1. <?php header("Refresh: 10; URL=http://site" ); ?>
  2. <html>
  3. ...
  4. ton post a bien été pris en compte et zou
  5. ...
  6. </html>


Message édité par afbilou le 18-07-2005 à 16:03:51
Reply

Marsh Posté le 18-07-2005 à 16:06:05    

C'est le genre de redirection à virer d'urgence. Celle sur forum auto est beaucoup mieux. T'arrive sur une page avec des liens, genre voir le post, aller dans la section, retourner à l'index, etc. Comme ça tu peux choisir ce que tu veux faire.
 
Aussi, tant qu'on ne peut pas désactiver ce genre de truc, il ne faut pas les utiliser, afin d'être conforme avec les règles d'accessibilité :

Citation :

Until user agents provide the ability to stop the refresh, do not create periodically auto-refreshing pages. [Priority 2]
    For example, in HTML, don't cause pages to auto-refresh with "HTTP-EQUIV=refresh" until user agents allow users to turn off the feature.


Reply

Marsh Posté le 18-07-2005 à 16:08:40    

afbilou a écrit :

Code :
  1. <?php header("Refresh: 10; URL=http://site" ); ?>
  2. <html>
  3. ...
  4. ton post a bien été pris en compte et zou
  5. ...
  6. </html>



Ha okey, je n'avais pas bien compris le fonctionnement du header PHP à retardement. :jap:
Effectivement, dans ce cas là.

Reply

Marsh Posté le 18-07-2005 à 16:45:35    

FlorentG a écrit :

C'est le genre de redirection à virer d'urgence. Celle sur forum auto est beaucoup mieux. T'arrive sur une page avec des liens, genre voir le post, aller dans la section, retourner à l'index, etc. Comme ça tu peux choisir ce que tu veux faire.


 
Ouais mais c'est un peu lourd de devoir cliquer à chaque coup quand même :/ Puis sur forum-auto c'est sémantiquement et ergonomiquement complètement nul : "cliquez ici pour aller sur votre message" avec juste le "ici" qui est cliquable, au lieu d'un gros lien "Aller sur votre message" [:kiki]


Message édité par antp le 18-07-2005 à 16:46:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-07-2005 à 17:06:25    

Ha, dès que je parle de l'écran de confirmation de FA, y'a antp qui arrive pour signaler les "cliquer ici". Et là, je lui répond que c'est effectivement à chier de ce côté là :D Mais bon comme dit [:spamafote] C'est un truc qui devrait être configurable dans les options :  

  • Rediriger vers le post
  • Afficher un écran de choix

Reply

Marsh Posté le 18-07-2005 à 17:44:04    

FlorentG a écrit :

Ha, dès que je parle de l'écran de confirmation de FA, y'a antp qui arrive pour signaler les "cliquer ici".


 
:D


Message édité par antp le 18-07-2005 à 17:44:21

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-07-2005 à 17:47:40    

Je soupçonne même un bot qui recherche sur "FlorentG forum auto redirection" :D

Reply

Marsh Posté le 27-09-2005 à 00:13:15    

bakastef a écrit :

Je propose une solution alternative.. enfin a debattre.. pourquoi pas faire:

Code :
  1. code
  2.   code
  3.    code...
  4. flush();
  5. sleep();
  6. header();



Hello,  
j'ai le mm style de problème : je voudrais temporiser l'execution du script !
mais pas au niveau client mais serveur.
Je m'explique : je viens de me faire une galerie de photos, les gens peuvent selectionner les photos avec une checkbox. En validant  ils sont redirigés vers une page de téléchargement... et là catastrophe : le serveur (Free.fr) n'a pas le temps de générer le zip... ("Allowed memory size of 8388608 bytes exhausted (tried to allocate 32460 bytes)" ) j'ai dc tenter de faire des paquets plûs petits (10 photos)...
Malheureusement ca ne marche pas non plus.. (les premiers paquets sont ok...mais les suivants non)
=> je voudrais donc donner plus de temps au serveur pour qu'il puisse zipper sans surcharge...  
vous auriez une idée ???  
ou d'autres pistes ?? du style iframe à relaoder ? d'avance merci pour votre aide !!
 
un exemple ici http://7rla2.free.fr/index.php?photo_de=pouet
 
au plaisir de vous lire,  
 
H

Reply

Marsh Posté le 27-09-2005 à 01:43:34    

Sympa, le panier à photo ...
Mais je suis plus que perplexe sur le plan flush(), sleep() et wake_up_tomorrow_morning_and_eat_your_breakfast() :?
je vois pas le rapport, et surtout ça marche pas comme attendu, sinon allez on pête un câble, on déraisonne, et on va forké l'execution du script et ... oupss désolé ... pourquoi penses-tu avoir un prob. de temporisation, moi je vois ça comme un prob. d'alloc. mémoire, alors que tu alloues maintenant où plus tard, tu alloueras toujours trop ?!
tu le fais avec quoi ton .zip ?

Reply

Marsh Posté le 27-09-2005 à 09:29:33    

hdh a écrit :

et là catastrophe : le serveur (Free.fr) n'a pas le temps de générer le zip... ("Allowed memory size of 8388608 bytes exhausted (tried to allocate 32460 bytes)" )

traduction du message d'erreur :
Limitation de l'espace mémoire de 8388608 octets atteint (impossible d'alouer 32460 octets suplémentaires)
 
Un probléme de durée? [:atlantis] T'es sur? [:atlantis]

Reply

Marsh Posté le 27-09-2005 à 09:35:01    

Ouais, c'est juste la limitation de la mémoire, qui est à 8 Mo par défaut. Donc si t'essayes de faire un .zip qui dépasse 8 Mo, forcément ça foire...

Reply

Marsh Posté le 27-09-2005 à 09:47:37    

ou plusieurs zip en oubliant de libérer les variables inutilisés (vive unset pour ce genre de truc :) )

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed