Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  redirection temporisée avec header

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

redirection temporisée avec header

n°1291406
Djebel1
Nul professionnel
Posté le 24-01-2006 à 21:20:47  profilanswer
 

Bien le bonjour !
 
J'aurai voulu savoir comment faire avec header une redirection temporisée (comme par exemple sur ce site la page intermédiaire quand on rentre son login et mdp  pour se connecter, la page te dit "ok t'es connecté" et te renvoit sur ta page précédente).
 
En effet, pas de problème pour rediriger avec

Code :
  1. header ('Location : trucmuche.php') ;

mais dans ce cas la redirection est immédiate et pas moyen de voir ce que la page doit afficher.
Je n'ai rien vu dans cette fonction qui permettait de temporiser : http://www.php.net/header
 
J'ai bien pensé à une temporisation en php, mais comme on doit envoyer le header avant quoique soit d'autre, je ne peux pas afficher quelque chose, puis balancer le header pour rediriger.
 
Donc, comment faites-vous ? :)

mood
Publicité
Posté le 24-01-2006 à 21:20:47  profilanswer
 

n°1291416
the_silenc​er
Posté le 24-01-2006 à 21:38:58  profilanswer
 

Salut,
 
tu peux essayer ca : header('Refresh: 2; URL=trucmuche.php') ;
dans ce cas ta page change au bout de 2s.
 
sinon ca aussi: <meta http-equiv="refresh" content="2; url=''trucmuche.php">
 
 :)

n°1291417
naceroth
Posté le 24-01-2006 à 21:39:10  profilanswer
 

Je vais te répondre franchement, et j'espère que tu ne le prendras pas mal, mais comment donc espères tu que l'utilisateur ait le temps de lire quelque chose sur son navigateur alors que le header est destiné au serveur qui envoit la page ?
 
Bref, les redirections temporisées comme tu dis, ce sont des <meta refresh> html, pas un header php.
 
(et je n'insiste même pas sur l'aspect idiot de vouloir passer un message sur une page intermédiaire, obligeant ainsi le client à recontacter le serveur pour obtenir la page suivant plutôt que de mettre directement le message sur la page finale, c'est un des trucs que j'ai jamais compris en ASP...)

n°1291488
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:19:33  profilanswer
 

naceroth a écrit :

Je vais te répondre franchement, et j'espère que tu ne le prendras pas mal, mais comment donc espères tu que l'utilisateur ait le temps de lire quelque chose sur son navigateur alors que le header est destiné au serveur qui envoit la page ?
 
Bref, les redirections temporisées comme tu dis, ce sont des <meta refresh> html, pas un header php.
 
(et je n'insiste même pas sur l'aspect idiot de vouloir passer un message sur une page intermédiaire, obligeant ainsi le client à recontacter le serveur pour obtenir la page suivant plutôt que de mettre directement le message sur la page finale, c'est un des trucs que j'ai jamais compris en ASP...)


 
C'est ce que fait HFR :whistle:
 
P.S. : Méthode que je n'utilise pas en ce qui me concerne, je préfère, comme tu dis, afficher un message sur la page de destination.


---------------
Gamertag: CoteBlack YeLL
n°1291489
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:20:43  profilanswer
 

naceroth a écrit :

Je vais te répondre franchement, et j'espère que tu ne le prendras pas mal


non non, jsuis là pour apprendre
 

naceroth a écrit :

Bref, les redirections temporisées comme tu dis, ce sont des <meta refresh> html, pas un header php.

oki en fait j'avais tellement entendu dire que les redirection avec des <meta refresh> c'était le mal, que je croyais que vous passiez par header
 

naceroth a écrit :

(et je n'insiste même pas sur l'aspect idiot de vouloir passer un message sur une page intermédiaire, obligeant ainsi le client à recontacter le serveur pour obtenir la page suivant plutôt que de mettre directement le message sur la page finale, c'est un des trucs que j'ai jamais compris en ASP...)


bah je voulais dire, tu sais comme quand tu te connectes sur ce site : tu entres tes logins, mot de passe, une page apparait pour te dire que ta connection a réussi, et te renvoie sur la page précédente.
 
 
Bon donc, <meta refresh> n'es pas le mal absolu pour une redir temporisée, c'est bon ?

n°1291490
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:22:04  profilanswer
 

Dj YeLL a écrit :


P.S. : Méthode que je n'utilise pas en ce qui me concerne, je préfère, comme tu dis, afficher un message sur la page de destination.


le problème avec ça, c'est que si tu fais retour, tu as ton navigateur qui te dit 'attention la page contient des post datas, voulez vous les renvoyer' et c'est ça que je veux éviter

n°1291496
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:25:55  profilanswer
 

Djebel1 a écrit :

le problème avec ça, c'est que si tu fais retour, tu as ton navigateur qui te dit 'attention la page contient des post datas, voulez vous les renvoyer' et c'est ça que je veux éviter


 
Non ;)
 
Tu as ta pages 'mapage.php' par exemple, avec un formulaire.
Tu valides -> Page de traitement avec un header('Location: mapage.php?ok=1');
Tu es directement redirigé vers ta page 'mapage.php' sur laquelle tu mets :
 

Code :
  1. if(isset($_GET['ok']) && $_GET['ok']) {
  2.    echo 'Message validé';
  3. }


 
Si tu cliques su précédent tu retombes donc sur ta page 'mapage.php'


Message édité par Dj YeLL le 24-01-2006 à 22:26:23

---------------
Gamertag: CoteBlack YeLL
n°1291498
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:29:02  profilanswer
 

Vi c'est ça que je veux faire. Mais quel est le problème à afficher un message sur la page de traitement ?
 
Et pour faire ça, le mieux c'est header ou <meta refresh> ?


Message édité par Djebel1 le 24-01-2006 à 22:29:17
n°1291502
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:30:57  profilanswer
 

Si tu affiches un message sur la page de traitement, déjà tu obliges le navigateur à changer de pages 2 fois, avec un header, tu ne changes pas de page.
 
Si tu utilise une balise META ça ne changera rien à ton problème de bouton "précédent".


---------------
Gamertag: CoteBlack YeLL
n°1291506
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:33:31  profilanswer
 

oki merci pour tes réponses.
 
Le problème, c'est que si tu fais un formulaire de login, tu veux renvoyer l'utilisateur sur la page d'où il s'est connecté. Et entre temps tu veux lui dire 'ok t'es bien connecté'.
 
C'est pour ça, je voulais afficher que la connection au site était réussie sur la page de traitement, et ensuite renvoyer sur la page d'ou venait l'utilisateur

Message cité 1 fois
Message édité par Djebel1 le 24-01-2006 à 22:33:47
mood
Publicité
Posté le 24-01-2006 à 22:33:31  profilanswer
 

n°1291509
naceroth
Posté le 24-01-2006 à 22:41:20  profilanswer
 

Dj YeLL a écrit :

C'est ce que fait HFR :whistle:


 
Personne n'est parfait :D
 
Non, mais si HFR (ou la presque totalité des sites qui hébergent un forum, puisque c'est généralisé) ont une volume de transfert illimité, grand bien leurs fassent hein. Ca n'en reste pas moins idiot de faire attendre un gars x secondes + chargement. (sans compter que celle d'HFR a la mauvaise habitude de ne pas aller plus loin que le message à la con chez moi  :ange: )

n°1291511
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:42:07  profilanswer
 

En principe il y a toujours moyen de caser ça quelque part.
 
De plus, une fois connecté je suppose qu'il y a quelque chose qui l'indique sur la page, un menu par exemple.
 
Sur le site que je suis en train de coder, j'ai un menu "Se connecter - S'enregistrer" ... si on se connecte, il devient "Mon Compte - Se déconnecter"
 
L'utilisateur voit ainsi s'il est connecté ou non.
 
Sinon, si tu codes correctement, je suppose que tu as un fichier à inclure dans lequel tu as l'header de ton site (<html><head><body>...) Rien ne t'empêche dans cette page d'ajouter ton if(...){ echo 'Vous êtes connecté'; } après BODY... comme ça quelle que soit la page d'où il vient, le message sera affiché.


---------------
Gamertag: CoteBlack YeLL
n°1291512
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:42:19  profilanswer
 

edit : oui oki
c'est vrai que c'est pas tres gênant de pas afficher de message comme quoi c'est bon.
 
bon bah merci pour tout :)


Message édité par Djebel1 le 24-01-2006 à 22:43:43
n°1291513
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:43:25  profilanswer
 

naceroth a écrit :

Personne n'est parfait :D
 
Non, mais si HFR (ou la presque totalité des sites qui hébergent un forum, puisque c'est généralisé) ont une volume de transfert illimité, grand bien leurs fassent hein. Ca n'en reste pas moins idiot de faire attendre un gars x secondes + chargement. (sans compter que celle d'HFR a la mauvaise habitude de ne pas aller plus loin que le message à la con chez moi  :ange: )


 
Ca m'arrive aussi parfois, et ce message m'enerve de toute façon !
 
Je m'en fout de savoir que "Votre message à été posté avec succès" ... puisque de toute façon le forum nous renvoi à ce dernier, donc on voit bien qu'il a été posté.


---------------
Gamertag: CoteBlack YeLL
n°1291514
naceroth
Posté le 24-01-2006 à 22:43:39  profilanswer
 

Djebel1 a écrit :

oki merci pour tes réponses.
 
Le problème, c'est que si tu fais un formulaire de login, tu veux renvoyer l'utilisateur sur la page d'où il s'est connecté. Et entre temps tu veux lui dire 'ok t'es bien connecté'.
 
C'est pour ça, je voulais afficher que la connection au site était réussie sur la page de traitement, et ensuite renvoyer sur la page d'ou venait l'utilisateur


 
Pas un gros soucis ça, un champ hidden avec l'adresse courante de la page où se situe le formulaire et hop, problème résolu, tu connais l'adresse où renvoyer ton utilisateur.

n°1291517
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:44:45  profilanswer
 

vivi, ça c'est pas le problème, j'utilise une variable de session pour stocker quelle est la dernière page vue :)

n°1291518
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:45:05  profilanswer
 

naceroth a écrit :

Pas un gros soucis ça, un champ hidden avec l'adresse courante de la page où se situe le formulaire et hop, problème résolu, tu connais l'adresse où renvoyer ton utilisateur.


 
Même pas, encore mieux, sur la page de validation tu récupère l'info avec $_SERVER['HTTP_REFERER'].
 
Mais de toute façon ce n'était pas sa question ;)


---------------
Gamertag: CoteBlack YeLL
n°1291519
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:45:31  profilanswer
 

Djebel1 a écrit :

vivi, ça c'est pas le problème, j'utilise une variable de session pour stocker quelle est la dernière page vue :)


 
Pas la peine. (voir mon précédent message)


---------------
Gamertag: CoteBlack YeLL
n°1291521
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:47:24  profilanswer
 

non, le $_SERVER['HTTP_REFERER'] est pas fiable à 100 %

n°1291523
naceroth
Posté le 24-01-2006 à 22:48:03  profilanswer
 

Dj YeLL a écrit :

Même pas, encore mieux, sur la page de validation tu récupère l'info avec $_SERVER['HTTP_REFERER'].
 
Mais de toute façon ce n'était pas sa question ;)


 
Tu m'excuseras si je préfère une méthode non bidouillable par le navigateur :)

n°1291524
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:48:47  profilanswer
 

naceroth a écrit :

Tu m'excuseras si je préfère une méthode non bidouillable par le navigateur :)


 
:??: .. euh même si l'utilise bidouille cette info je ne vois pas le problème ... ce n'est qu'une redirection ...


---------------
Gamertag: CoteBlack YeLL
n°1291528
Djebel1
Nul professionnel
Posté le 24-01-2006 à 22:51:29  profilanswer
 

vi y a pas de probleme, mais c'est vite fait de rajouter une ligne de code pour la stocker dans une variable de session je trouve ^^
 
d'ailleurs un champ caché c'est aussi bidouillable par l'utilisateur je pense. Suffit de regarder les variables envoyées en post, et d'en changer la valeur (avec wget par exemple t'envoie les valeurs que tu veux en post data)

Message cité 1 fois
Message édité par Djebel1 le 24-01-2006 à 22:52:47
n°1291534
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 22:59:44  profilanswer
 

Oui, j'avoue que l'idée de stocker la dernière page vue dans $_SESSION est une bonne idée :)


---------------
Gamertag: CoteBlack YeLL
n°1291542
omega2
Posté le 24-01-2006 à 23:06:26  profilanswer
 

Dj YeLL a écrit :

Si tu affiches un message sur la page de traitement, déjà tu obliges le navigateur à changer de pages 2 fois, avec un header, tu ne changes pas de page.

Je vais peuit être dire une bétise, mais même s'il n'y a qu'une seule page de visible avec le bouton précédant du navigateur ou simplement de visible à l'écran, pour le serveur, ca va quand même faire deux demandes distinctes il me semble.

Message cité 1 fois
Message édité par omega2 le 24-01-2006 à 23:06:40
n°1291554
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 23:20:51  profilanswer
 

omega2 a écrit :

Je vais peuit être dire une bétise, mais même s'il n'y a qu'une seule page de visible avec le bouton précédant du navigateur ou simplement de visible à l'écran, pour le serveur, ca va quand même faire deux demandes distinctes il me semble.


 
Il ne me semble pas que ça génère un changement de page, mais je peux me tromper


---------------
Gamertag: CoteBlack YeLL
n°1291556
omega2
Posté le 24-01-2006 à 23:28:46  profilanswer
 

Je viens de tester voilà ce que ca donne au niveau du log d'apache :

Citation :

127.0.0.1 - - [24/Jan/2006:23:46:42 +0100] "GET /php4/page1.php HTTP/1.1" 302 -
127.0.0.1 - - [24/Jan/2006:23:46:42 +0100] "GET /php4/page2.php HTTP/1.1" 200 4


On a donc bien deux demandes d'envoyé au serveur.

n°1291557
naceroth
Posté le 24-01-2006 à 23:32:05  profilanswer
 

Djebel1 a écrit :

vi y a pas de probleme, mais c'est vite fait de rajouter une ligne de code pour la stocker dans une variable de session je trouve ^^
 
d'ailleurs un champ caché c'est aussi bidouillable par l'utilisateur je pense. Suffit de regarder les variables envoyées en post, et d'en changer la valeur (avec wget par exemple t'envoie les valeurs que tu veux en post data)


 
Oui mais bon, là, c'est aller chercher un enculeur de mouche sur tous les visiteurs, je veux bien si c'est l'ordinateur du patron de la CIA, mais faut pas forcer non plus. Un referer bidon/absent est quand même nettement plus commun, entre les paranos et les autres devs qui oublient de désactiver la fonction qui masque le referer ( <- style moi :ange: )

n°1291558
Djebel1
Nul professionnel
Posté le 24-01-2006 à 23:42:24  profilanswer
 

donc d'après ce que tu dis omega2, finalement ça change rien de faire afficher quelque chose sur la page de traitement ?

n°1291567
omega2
Posté le 25-01-2006 à 00:16:19  profilanswer
 

Pour le serveur, ca doit pas changer grand chôse à par qu'il renvoie un signal de redirection 302 (redirection temporaire : ca signifie généralement que la page existe mais est temporairement indisponible) quand on utilise le "header(Location:mapage.php" );" tandis que dans l'autre cas, ca renvoie un signal 200. (ok tout c'est bien passé)
Pour le navigateur, une redirection de type 302 fera qu'il ne notera pas la page d'origine dans l'historique de navigation (la page n'apparaitra pas dans la liste des pages précédantes/suivantes) vu que le navigateur considérera la page d'arrivé comme étant la même page mais à une autre adresse. Une redirection à coup de balise refresh ou de header "refresh" provoquera le changement de page aprés x secondes mais en même temps la page intermédiaire sera accéssible dans la liste des pages précédantes. Un internaute qui reviendrait sur cette page et qui voudrait la rafraichir renverais à nouveau toutes les données déjà envoyé une fois ce qui provoquerait l'insertion en double si insertion il y avait eu la premiére fois.

n°1291572
Djebel1
Nul professionnel
Posté le 25-01-2006 à 00:29:59  profilanswer
 

t'es sur que la page est accessible avec header "refresh" ? j'ai testé et elle n'apparaissait pas dans l'historique, ou alors j'ai trop fumé
 
edit : j'ai retesté, et sous firefox en tout cas il ne garde pas la page dans l'historique avec le header refresh


Message édité par Djebel1 le 25-01-2006 à 00:43:32
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  redirection temporisée avec header

 

Sujets relatifs
Menu deroulant et redirectiongestion dynamique et redirection ???
ereg et redirectionPb redirection dans servlet
redirection ??? comment faire ?Redirection après quelques secondes et affichage d'une page
pb de redirection en perlPopup et redirection
mail : confusion entre le header et le bodyPetit soucis de redirection sous Firefox et Opéra
Plus de sujets relatifs à : redirection temporisée avec header


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR