Faire passer une variable par un header("Location: ...")

Faire passer une variable par un header("Location: ...") - PHP - Programmation

Marsh Posté le 01-08-2005 à 21:45:21    

Bonsoir :)
 
Voilà mon problème :
 
Sur certaines pages de mon site, je demande à l'utilisateur d'être authentifié pour y accéder.
S'il n'est pas authentifié, je le renvoie vers la page d'authentification : login.php.
 
Je souhaite qu'après son authentification, il soit renvoyé automatiquement vers la page dont il provient. Comme je savais pas comment faire, je me suis dit que j'allais faire passer le nom de la page par une variable d'URL.
 
Donc, s'il vient de la page index.php, le lien vers login.php est sous la forme  
 

Code :
  1. header("Location:login.php?prov=index" )


 
S'il vient de la page compte :  
 

Code :
  1. header("Location:login.php?prov=compte" )


 
...
 
Sur la page de login, une fois la vérification du login faite, j'ai monté la redirection sous cette forme :  
 

Code :
  1. if ($_GET['prov']="index" )
  2. { header("Location:../index.php" ); }
  3. else if ($_GET['prov']="commande" )
  4. { header("Location:commande.php" ); }
  5. else if ($_GET['prov']="compte" )
  6. { header("Location:compte.php" ); }


 
J'étais tout content de mon idée :D, seulement voilà, ca ne fonctionne pas, ça renvoie toujours vers la même page. Vous sauriez me dire ce qui cloche svp, parce que là je vois pas trop :??:
 
Ou peut-être me proposer une autre solution pour parvenir à mes fins?
 
Merci :hello:

Reply

Marsh Posté le 01-08-2005 à 21:45:21   

Reply

Marsh Posté le 01-08-2005 à 21:47:49    

remplace = par == ;)

Reply

Marsh Posté le 01-08-2005 à 21:49:01    

il faut mettre == dans tes structures de contrôle et preferer des chemins absolus aux chemins relatifs dans le Location.  :jap:
 
http://www.designlaboratory.net/smileyyyy/grilled.jpg


Message édité par pmusa le 01-08-2005 à 21:49:51
Reply

Marsh Posté le 01-08-2005 à 21:57:02    

Merci à vous deux, je teste de suite avec un ==
 
Je suis pas encore au point là-dessus, quand c'est pour un contrôle on met un double =, et le simple ne sert que pour la déclaration de variables?

Reply

Marsh Posté le 01-08-2005 à 21:59:40    

Onesque a écrit :

Merci à vous deux, je teste de suite avec un ==
 
Je suis pas encore au point là-dessus, quand c'est pour un contrôle on met un double =, et le simple ne sert que pour la déclaration de variables?

Voilà, et trois c'est pour vérifier que deux variables sont identiques ET de même type (string, int, float...) : plus rapide et plus sur.

Reply

Marsh Posté le 02-08-2005 à 09:34:29    

Accessoirement, on ne met d'URL relative dans un header, faut toujours mettre l'adresse absolue :

header('Location: http://www.pouet.com/index.php?prov=index');


 
Et ceux qui demandent pourquoi n'ont qu'a aller lire la doc de PHP et le protocole HTTP 1.1 ;)


Message édité par FlorentG le 02-08-2005 à 09:34:43
Reply

Marsh Posté le 02-08-2005 à 13:02:18    

Pour le moment, je suis un peu embêté pour les adresses absolues, vu que je travaille en local et que je ne connais aps encore l'adresse qui accueillera le site une fois mis en ligne, mais je vais aller jeter un oeil aux raisons qui font que c'est nécessaire ;) :D
 
Sinon vu que le traitement de ma page login.php est ds cette même page, ma variable de provenance ne repasse pas une fois le script executé, donc je vais devoir reprendre tout ca :/...

Reply

Marsh Posté le 02-08-2005 à 14:40:15    

Aucun problème sur le fait que ce soit en local ;) Y'a ce qu'il faut pour trouver dans quel dossier et sur quel serveur on est

Reply

Marsh Posté le 02-08-2005 à 15:45:56    

C'était juste qu'étant en local et comptant passer sur le web bientôt, j'ai un peu la flemme de me retaper toutes mes pages pour modifier les header :D
 
A moins que je crée le chemin absolu à l'aide d'une variable, qui dépendrait de l'endroit où l'on se trouve. Je vais peut-être faire ça tout compte fait.
 
Sinon c'était bien le double égal qu'il fallait pour que ca fonctionne ! :jap:

Reply

Marsh Posté le 02-08-2005 à 16:11:38    

Y'a ce qu'il faut comme variables genre dans $_SERVER pour trouver où on est et créer une adresse absolue :)

Reply

Sujets relatifs:

Leave a Replay

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