Redirection en php

cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006 - 24 avril 2006 à 14:24
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 26 avril 2006 à 17:22
Bonjour,

Je suis en train de développer une fonction menu : Le langage de programmation utilisé est php.

function menu($num)
{
switch ($num)
{
case 1 :

echo"
<center><SCRIPT LANGUAGE="JavaScript" SRC="./menu/menuNiv1.js"></script></center>



\";
break;
case 2 :
echo\"
<table class=\\"menu\\" cellspacing=\\"0\\" cellpadding=\\"0\\">----
<center><SCRIPT LANGUAGE="JavaScript" SRC="./menu/menuNiv2.js"></script></center>



\";
break;
case 3 :
echo\"
<table class=\\"menu\\" cellspacing=\\"0\\" cellpadding=\\"0\\">----
<center><SCRIPT LANGUAGE="JavaScript" SRC="./menu/menuNiv3.js"></script></center>



\";
break;
case 4 :
echo\"
<table class=\\"menu\\" cellspacing=\\"0\\" cellpadding=\\"0\\">----
<center><SCRIPT LANGUAGE="JavaScript" SRC="./menu/menuNiv4.js"></script></center>



\";

break;
default :
echo\"
<table class=\\"menu\\" cellspacing=\\"0\\" cellpadding=\\"0\\">----
<center><SCRIPT LANGUAGE="JavaScript" SRC="./menu/menuNiv1.js"></script></center>



<table class="info" cellspacing="0" cellpadding="0" >";
break;
}


Et mon soucis est que je voudrais faire une redirection pour chaque cas selon le profil du menu.


J'ai essayé avec location...mais je n'obtiens rien, serait il judicieux à la place de faire une structure conditionnelle en if else ?


Merci d'avance

20 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 14:36
Hello,

une redirection en php ,c'est :
header ('Location: mapage.php');
Mais ce ne peut se faire si des en-têtes ont déjà été envoyés. Bref, tu ne peux pas afficher de html avant ce header ().
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
24 avril 2006 à 15:11
euh, j'ai pas très bien compris ton code et la ou tu veux en venir, mais si ça t'intéresse, moi j'utilise ceci pour rediriger:
echo '<META HTTP-EQUIV="Refresh" CONTENT="1; URL=tapage.php">';
dans cet exemple, tu sera redirigé vers tapage.php au bout d'une seconde (le nb de secondes est la valeur de content). Je préfère cette méthode à la méthode header('Location:tapage.php') car avec celle-ci il ne faut rien mettre comme balise html avant, sous peine d'une erreur que j'ai souvent rencontré avant de découvrir ce moyen de redirection... Mais je ne sais pas si c'est du "codage propre" aussi.
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
24 avril 2006 à 15:20
Salut !

Ok pour ta méthode, mais comment procédes tu pour qu'elle ne se rafraichisse pas toutes les secondes ?

Merci
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
24 avril 2006 à 15:25
tu veux dire si tu rediriges sur la meme page? la je ne sais pas, mais c'est clair que ça va te faire une boucle infinie dans ce cas la: tu rafraichis, t'attends une seconde, tu rafraichis à nouveau, tu attend, tu rafraichis... Si tu veux que cela ne rafraichisse qu'une seule fois, passe un nouveau paramètre, par exemple tu fait url=tapage.php?booleen=1 et ensuite tu fais :
if($_GET['booleen']!=1){
tu rafraichis
}
naturellement, avant il faut tester si $_GET['booleen '] existe.Dis moi si c'était bien cela ta question, ou si j'ai mal compris ce que tu voulais.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 15:30
C'est horrible, cette façon de faire.

header () reste la meilleure solution.
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
24 avril 2006 à 15:35
Tu le placerais ou exactement ton header () car il me semble que tu dois l'utiliser avant le html, moi mes pages sont toutes en php

switch ($num)
{
case 1 :

tu le placerais après le case 1 : avec un echo'

Merci d'avance.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 16:03
Y a méprise sur php et html, là.
PHP génère du html...
un echo, ça génère du html, même si c'est une structure php.

Je ne sais pas où je le placerais parce que je ne comprends pas ce que tu veux faire exactement.

TU affiches un bout de tableau, puis tu rediriges ton utilisateur...? A quoi sert le bout de tableau, dans ce cas...?
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
24 avril 2006 à 16:11
je veux rediriger mes utilisateurs selon le profil qu'ils ont, voila pourquoi j'ai choisi une fonction comme ci dessous :

function menu($num)
{
switch ($num)
{
case 1 :

break;
case 2 :
break;
case 3 :
break;
case 4 :
break;
default :
echo"
break;
}
}
Je veux faire une redirection pour chaque cas ?
après case 1 : redirection....

Voila
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 16:20
Ben oui...
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
24 avril 2006 à 16:27
D'ou ma question, comment faut il que je mette header() , avec un echo sans echo....
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 16:30
Faudrait voir à lire un peu les docs, quand même, avant de poser des questions sur un forum.


header


HTTP/1.1 Specification pour plus d'informations sur les en-têtes <VAR class= literal>Location:</VAR>, y compris le protocole, hôte et chemin absolu. Mais certains navigateurs acceptent les URI relatives. Vous pouvez généralement utiliser les variables globales <VAR class=varname>$_SERVER['HTTP_HOST']</VAR>, <VAR class=varname>$_SERVER['PHP_SELF']</VAR> et dirname() pour construire vous-même une URI absolue :
session.use_trans_sid est activé. Il doit être passé manuellement en utilisant la constante <TT class =constant>SID</TT>.


Les scripts PHP génèrent souvent du HTML dynamiquement, qui ne doit pas être mis en cache, ni par le client, ni par les proxy intermédiaires. On peut forcer la désactivation du cache de nombreux clients et proxy avec :
session_cache_limiter() et <VAR class= literal>session.cache_limiter</VAR> peuvent être utilisés pour générer les en-têtes de caches corrects, lorsque les sessions sont utilisées.


N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
ob_start() et ob_end_flush() dans vos scripts, ou en modifiant la directive de configuration <VAR class =literal>output_buffering</VAR> dans votre fichier <TT class=filename>php.ini</TT> ou vos fichiers de configuration du serveur.


Si vous voulez que vos utilisateur recoivent une alerte pour sauver les fichiers générés, comme si vous génériez un fichier PDF, vous pouvez utiliser l'en-tête Content-Disposition pour fournir un nom de fichier par défaut, à afficher dans le dialogue de sauvegarde.
safe mode est activé, l'UID du script est ajouté à la partie <VAR class=literal>realm</VAR> des en-têtes <VAR class=literal>WWW-Authenticate</VAR> que vous envoyez avec cet en-tête.


Voir aussi headers_sent(), setcookie() et la section sur l'identification HTTP.

http://fr2.php.net/manual/fr/function.header.php
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 avril 2006 à 20:15
Salut,

tu peux le mettre partout en passant par des solutions un peu plus gourmandes telle que la bufferisation de sortie par exemple.

<?php
ob_start();

echo 'balbalbalbalablabal';

header('location:tapage.php');

ob_end_flush();
?>

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
25 avril 2006 à 08:42
Bonjour,

Est ce que la solution que tu me proposes peut entrer dans ma fonction ou pas ou faut que je fasse abstraction de ma fonction avec mon switch, case et break ?

Merci d'avance
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2006 à 08:59
Ton switch n'a aucune influence là-dessus.
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
25 avril 2006 à 09:05
J'ai fait un essai avec la bufférisation, et il ne me redirige toujours pas, il ne vas que sur la page d'acceuil et pas sur ma frame.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2006 à 09:12
Sur ta frame...?
Tu n'avais pas parlé de frame jusqu'ici...


Et il faut m'expliquer ce que tu appelles une redirection vers une frame.
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
25 avril 2006 à 09:26
Ce que j'appelle redirection c'est que après après valider ton identité par ton login et ton mot de passe, cela te redirige vers une frame précise qui regroupe sommaire et acceuil ?

Voila
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 avril 2006 à 17:36
Je pense que tu t'embarques dans un code pas possible, pour rediriger dans une autre frame faut du javascript à gogo... bref utiliser les frames pour faire un site est une mauvaise solution.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_Angelina38 Messages postés 30 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 juillet 2006
26 avril 2006 à 08:16
Si tu as une autre solution que les frames pour que le menu principal soit du côté gauche et la page auquel est relié le menu apparaissent à droite, je t'écoute, je suis toute ouie.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 avril 2006 à 17:22
Bah tu utilises du XHTML et CSS, avec des includes en PHP pour ne pas fouttre tout le code de ton menu dans chaque fichier.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous