[PHP?] Redirection mais affichage html avant

Redirection mais affichage html avant [PHP?] - PHP - Programmation

Marsh Posté le 16-09-2003 à 20:23:16    

hello
 
Je voudrai faire une redirection apres l'execution d'un script PHP, mais sur cette page ou ce trouve cette redirection je voudrais afficher un message ou autre chose (du html quoi), un peu comme sur ce forum.
 
Avec le refresh HTML j'ai entendu que c'est deconseillé... c'est vrai ? pourquoi ?
 
Avec le JS je crois pas que ce soit une bonne idée car tt le monde ne l'active pas.
 
Avec le header php ca redirige tout de suite non ? ca n'affichrai donc pas de html avant... ou bien est ce qu'il y a un moyen ?

Reply

Marsh Posté le 16-09-2003 à 20:23:16   

Reply

Marsh Posté le 16-09-2003 à 21:16:48    

ob_start();
echo 'Redirection en cours...';
header('Location: http://www.bidule.net/');
ob_end_flush();

Reply

Marsh Posté le 16-09-2003 à 22:54:49    

t'est sur que ca marche parce que sur http://ch.php.net/manual/fr/function.ob-start.php c'est ecrit :
 
"ob_start() démarre la bufferisation de sortie. Tant qu'elle est enclenchée, aucune donnée, hormis les en-têtes, n'est envoyée au navigateur, mais temporairement mise en buffer."
 
et la c'est justement l'en tete qui est renvoyé... de plus j'ai oublié de preciser que mon script php qui est sur cette page renvoie un cookie.


Message édité par Big-Foot le 16-09-2003 à 22:56:55
Reply

Marsh Posté le 17-09-2003 à 00:57:51    

Attention, un script PHP n'est pas sur une page (donc pas chez le client) mais génére une page qui sera envoyée au client... faut bien faire la distinction
 
Sinon, qui ose encore désactiver le JS ? 0,1% des internautes ? Tant pis pour eux... tu mets un lien sur ton message vers là où tu veux les rediriger comme tout le monde le fait...


Message édité par $@m le 17-09-2003 à 00:59:06
Reply

Marsh Posté le 17-09-2003 à 08:06:36    

007seb a écrit :

Attention, un script PHP n'est pas sur une page (donc pas chez le client) mais génére une page qui sera envoyée au client... faut bien faire la distinction
 
Sinon, qui ose encore désactiver le JS ? 0,1% des internautes ? Tant pis pour eux... tu mets un lien sur ton message vers là où tu veux les rediriger comme tout le monde le fait...


 
Ridicule... En quoi cela sert-il à quelque chose de faire des redirections en Javascript...  :heink:  C'est un procédé tout juste employé par des mecs qui code avec les pieds.
 
Et pour répondre à la question originale, c'est idiot d'afficher qqc AVANT la redirection. Tu peux parfaitement faire une page qui va s'auto-diriger ensuite grace à un META. C'est la solution la plus propre avec les headers (ce qui d'ailleurs revient pratiquement au même). Le javascript ne devrait JAMAIS être utilisé pour un cas comme celui-ci.
 
Enfin concernant la désactivation du JS, c'est pas 0.1%, mais 10% et ce n'est pas négligeable. Et on ira de plus en plus dans le sens d'une désactivatio, car maintenant, les pubs ne sont plus toujours sous la forme de popup mais directement insérées dans la page (ex : multimerde).

Reply

Marsh Posté le 17-09-2003 à 13:59:31    

Citation :

Et pour répondre à la question originale, c'est idiot d'afficher qqc AVANT la redirection. Tu peux parfaitement faire une page qui va s'auto-diriger ensuite grace à un META]. C'est la solution la plus propre avec les headers (ce qui d'ailleurs revient pratiquement au même). Le javascript ne devrait JAMAIS être utilisé pour un cas comme celui-ci.


 
Une redirection grace à un meta : c'est ce que je pensais faire, mais j'ai lu sur le net que c'est pas tres bien, je sais pas pourquoi d'ailleur...
c'est vrai que c'est pas bien ? ou c'est justement la solution parfaite à mon probleme ?

Reply

Marsh Posté le 17-09-2003 à 15:33:40    

Big-Foot a écrit :

Citation :

Et pour répondre à la question originale, c'est idiot d'afficher qqc AVANT la redirection. Tu peux parfaitement faire une page qui va s'auto-diriger ensuite grace à un META]. C'est la solution la plus propre avec les headers (ce qui d'ailleurs revient pratiquement au même). Le javascript ne devrait JAMAIS être utilisé pour un cas comme celui-ci.


 
Une redirection grace à un meta : c'est ce que je pensais faire, mais j'ai lu sur le net que c'est pas tres bien, je sais pas pourquoi d'ailleur...
c'est vrai que c'est pas bien ? ou c'est justement la solution parfaite à mon probleme ?


 
Je ne vois pas pourquoi cela poserait un problème. A mon avis, c'est bien souvent la meilleure solution.

Reply

Marsh Posté le 17-09-2003 à 15:35:50    

Hermes le Messager a écrit :


 
Je ne vois pas pourquoi cela poserait un problème. A mon avis, c'est bien souvent la meilleure solution.


 
Du côté des moteurs de recherche... ils ignoreront une redirection en javascript mais détecteront un meta refresh [:spamafote]

Reply

Marsh Posté le 17-09-2003 à 15:54:48    

fastclemmy a écrit :


 
Du côté des moteurs de recherche... ils ignoreront une redirection en javascript mais détecteront un meta refresh [:spamafote]


Un header également hein... Les moteurs ne lisent pas le code PHP des pages, mais seulement le résultat, et jusqu'à preuve du contraire, un header génère un META qui va rediriger la page.
 
Regarde donc ce que génère le header de ce forum quand tu postes une réponse. Un header ou un "meta http-equiv="Refresh"..." c'est pareil hein...  


Message édité par Hermes le Messager le 17-09-2003 à 15:56:30
Reply

Marsh Posté le 17-09-2003 à 19:12:56    

un header php ca genere un meta html ??

Reply

Marsh Posté le 17-09-2003 à 19:12:56   

Reply

Marsh Posté le 17-09-2003 à 19:31:06    

Hermes le Messager a écrit :


Un header également hein... Les moteurs ne lisent pas le code PHP des pages, mais seulement le résultat, et jusqu'à preuve du contraire, un header génère un META qui va rediriger la page.
 
Regarde donc ce que génère le header de ce forum quand tu postes une réponse. Un header ou un "meta http-equiv="Refresh"..." c'est pareil hein...  

Même résultat ne veut pas dire même action. ;)
Un META est du texte envoyé dans la page html ou le fichier.
Un header est une info envoyé en dehors du fichier ou de la page html (avant le fichier plus précisément). C'est envoyé dans l'entête du flux d'où le nom d'header.
 
De plus, un header n'écrit rien de plus dans le code de la page. Si ici t'as une balise META refresh, c'est que ca a été envoyé tel quel dans le code.

Reply

Marsh Posté le 17-09-2003 à 19:56:31    

donc la redirection du header php et la meta c'est pas tout a fait la meme chose ok.
Mais est ce que je peu mettre un temps avant la redirection dans le header, comme dans le meta html ? ce qui me permetrait d'afficher qq chose avant cette redirection.

Reply

Marsh Posté le 17-09-2003 à 20:32:39    

007seb a écrit :

Attention, un script PHP n'est pas sur une page (donc pas chez le client) mais génére une page qui sera envoyée au client... faut bien faire la distinction
 
Sinon, qui ose encore désactiver le JS ? 0,1% des internautes ? Tant pis pour eux... tu mets un lien sur ton message vers là où tu veux les rediriger comme tout le monde le fait...


 
86% sur JS 1.2
13% JS désactivé
 
source : http://www.w3schools.com/browsers/browsers_stats.asp

Reply

Marsh Posté le 18-09-2003 à 05:24:56    

Citation :

Citation :

Une redirection grace à un meta : c'est ce que je pensais faire, mais j'ai lu sur le net que c'est pas tres bien, je sais pas pourquoi d'ailleur...  
c'est vrai que c'est pas bien ? ou c'est justement la solution parfaite à mon probleme ?

Du côté des moteurs de recherche... ils ignoreront une redirection en javascript mais détecteront un meta refresh


Il y a aussi le fait que le visiteur, s'il veut pour une raison X ou Y retourner a la page d'avant en cliquant sur "back" va pas arreter de se faire renvoyer sur la page qu'il essaye de quitter.
Il va etre oblige de cliquer comme un malade sur sa souris pour repasser le barrage du meta refresh (a moins que le refresh te laisse le temps de cliquer tranquille ce qui n'est pas souvent le cas). Le META refresh n'est pas une redirection "transparente".
Vous allez me dire que je chipote, mais ca m'arrive souvent et c'est grave lourd !
A l'oppose, la redirection utilisee lorsque tu postes un message sur ce forum est dite "transparente" et si tu cliques sur retour tu tombes sur la page d'edition directement.
beaucoup plus classe, beaucoup mieux !


Message édité par effisk le 18-09-2003 à 05:30:20
Reply

Marsh Posté le 19-09-2003 à 15:00:21    

Ouais ouais je suis d'accord

Reply

Marsh Posté le 19-09-2003 à 17:51:12    

effisk a écrit :

Citation :

Citation :

Une redirection grace à un meta : c'est ce que je pensais faire, mais j'ai lu sur le net que c'est pas tres bien, je sais pas pourquoi d'ailleur...  
c'est vrai que c'est pas bien ? ou c'est justement la solution parfaite à mon probleme ?

Du côté des moteurs de recherche... ils ignoreront une redirection en javascript mais détecteront un meta refresh


Il y a aussi le fait que le visiteur, s'il veut pour une raison X ou Y retourner a la page d'avant en cliquant sur "back" va pas arreter de se faire renvoyer sur la page qu'il essaye de quitter.
Il va etre oblige de cliquer comme un malade sur sa souris pour repasser le barrage du meta refresh (a moins que le refresh te laisse le temps de cliquer tranquille ce qui n'est pas souvent le cas). Le META refresh n'est pas une redirection "transparente".
Vous allez me dire que je chipote, mais ca m'arrive souvent et c'est grave lourd !
A l'oppose, la redirection utilisee lorsque tu postes un message sur ce forum est dite "transparente" et si tu cliques sur retour tu tombes sur la page d'edition directement.
beaucoup plus classe, beaucoup mieux !


 
Qu'est ce que tu appelle une redirection transparente ? redirection php ? js ??

Reply

Marsh Posté le 21-09-2003 à 13:47:01    

up

Reply

Marsh Posté le 21-09-2003 à 16:17:02    

Code :
  1. //  si le JS est désactivé ça pause probleme
  2.     <Script language="JavaScript">
  3.        setTimeout("document.location = 'index.php' ", 0)
  4.     </script>


 
 
ou
 

Code :
  1. // cette méthode semble la meilleur
  2.     echo "<META http-EQUIV=\"Refresh\" CONTENT=\"0; url=index.php\">";


Message édité par nemohp le 21-09-2003 à 17:53:09
Reply

Marsh Posté le 21-09-2003 à 21:17:58    

NemoHP a écrit :

Code :
  1. //  si le JS est désactivé ça pause probleme
  2.     <Script language="JavaScript">
  3.        setTimeout("document.location = 'index.php' ", 0)
  4.     </script>


 
 
ou
 

Code :
  1. // cette méthode semble la meilleur
  2.     echo "<META http-EQUIV=\"Refresh\" CONTENT=\"0; url=index.php\">";



Attention, cerrtain navigateur considérent une balise meta refresh avec une tempo réglé à 0 comme "pas de refresh" alors que d'autres le comprènent bien comme un changement de page immédiat.
le mieux, c'est de mettre la temporisation à 1 seconde, c'est très court et tous les navigateurs font bien le rafraichissement. ;)

Reply

Marsh Posté le 21-09-2003 à 21:21:06    

Hermes le Messager a écrit :

et jusqu'à preuve du contraire, un header génère un META qui va rediriger la page.


 
:heink: il me semblait plutôt que ça générait un code HTTP 302 ou quelque chose du genre


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

Marsh Posté le 21-04-2004 à 16:25:58    

chui confronté o même probleme, et j'aimerais bien avoir vos conclusions siouplé! :D
 
Le <META> me parait intéressant car surtout très simple à mettre en oeuvre :sol:, apres avec les histoires de référencement (par des moteurs de recherche) ca peut changer la donne (et en quoi ca consisterait concretement :??:)
 
MICI D'AVANCE :jap:
 
PS: g mon 'index.php'

<body>
<form method="post" action="./redirect.php">
<table align="center">
<tr><td>
<input type="text" name="tempo" size="3" maxlenght="3" />
</td><td>
<input type="submit" value="Go" class="bouton" />
</td></tr>
</table>
</form>
</body>


qui balance vers 'redirect.php'

<head>
<meta http-equiv="refresh" content="<?=$_POST['tempo']?>" URL="./index.php" />
</head>


Le problème c que au bout du temps écoulé $_POST['tempo'] ca "veut" rediriger (mon navigateur réagit comme s'il changeait de page) mais ca reste sur 'redirect.php'... [:airforceone]
 
RE MICI :jap:


Message édité par lkolrn le 21-04-2004 à 16:26:57
Reply

Marsh Posté le 21-04-2004 à 18:47:19    

<META http-EQUIV="Refresh" CONTENT="0;url=index.php"> C'est ca la syntaxe correcte
et pas META http-EQUIV="Refresh" CONTENT="0" url="index.php">

Reply

Marsh Posté le 21-04-2004 à 21:54:28    

antp a écrit :

:heink: il me semblait plutôt que ça générait un code HTTP 302 ou quelque chose du genre


Je viens de tester ça renvoie effectivement un code 302 et le champ Location qui va bien :)

Reply

Marsh Posté le 21-04-2004 à 22:12:07    

mici bien :jap: [:skyx@v]

Reply

Marsh Posté le 22-04-2004 à 10:11:56    

ben moi j'utilise une compilation de ce qui a été dit ici :)

function doneAdmin($msg_done) {
  ob_start();
 header('Location: index.php?page=done&msg='.$msg_done);
 ob_end_flush();
}


 
 
et sur done.php
 

<?
echo "<META http-EQUIV=\"Refresh\" CONTENT=\"5; url=index.php\">";
 
$Msg=array ( "",
   "Group successfully changed",
   "Group added in the database",
   "Group successfully deleted !",
   
);
 
echo "<p style=\"text-align:center\">".$Msg[$_GET["msg"]]."</p>";
?>


 
:)

Reply

Marsh Posté le 22-04-2004 à 12:32:19    

Comme le dirait ce cher Columbo: voyez-vous, ya kekchoz qui m'chiffonne, m'sieur chacal...
 
Pkoi t'utilises la temporisation des données (sauf des entêtes), alors que ton header() n'envoie de base QUE un entête :??:


Message édité par lkolrn le 22-04-2004 à 12:34:22
Reply

Marsh Posté le 22-04-2004 à 14:38:18    

paske j'ai pas tout recopier ^^

Reply

Marsh Posté le 22-04-2004 à 15:56:59    

mkay...[:aras qui rit]

Reply

Marsh Posté le 22-04-2004 à 15:58:28    

Sinon

moi j'ai écrit ça moi a écrit :

 
Le <META> me parait intéressant car surtout très simple à mettre en oeuvre :sol:, apres avec les histoires de référencement (par des moteurs de recherche) ca peut changer la donne (et en quoi ca consisterait concretement :??:)
 
MICI D'AVANCE :jap:



Message édité par lkolrn le 22-04-2004 à 15:58:50
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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