passer parametre en session dans href

passer parametre en session dans href - PHP - Programmation

Marsh Posté le 26-08-2010 à 21:16:35    

Bonsoir tout le monde.
 
Je souhaiterai communiquer un parametre entre page A et page B en PHP, en utilisant une variable de session (car j'ai pas envie que ma variable puisse être modifiée par le client, donc je voudrai éviter le get et le post).
 
Seulement voilà, j'ai un tableau html , à partir duquel je peux aller vers la page B. Et dans ce tableau il y a un "href=pageB.php". Comment affecter ma variable en session lorsque l'utilisateur va cliquer sur le lien de ce tableau ?  
 
J'ai surement pas dû comprendre quelque chose, car je ne vois vraiment pas comment faire. Qui peut me donner le méthode à utiliser ? ou alors ce que je veux faire n'est pas possible avec "href" ?
 
Merci d'avance pour vos éclaircissements.
 
Dominique

Reply

Marsh Posté le 26-08-2010 à 21:16:35   

Reply

Marsh Posté le 27-08-2010 à 09:21:58    

Pour enregistrer un paramètre en session, tu es obligé de l'envoyer à ton script soit en GET soit en POST. En GET, la personne pourra le modifier aisément, mais si tu l'envoie en POST à l'aide d'ajax en mettant un OnClick sur ton lien, ce sera déjà plus dur pour un utilisateur de la changer.
 
La meilleur solution restant de mettre une clé md5 permettant de vérifier si un utilisateur a modifié les variables passées en paramètre.


Message édité par FlyPhp le 27-08-2010 à 09:22:59

---------------
23Prod, Audit et conception de systèmes d'informations : http://www.23prod.fr
Reply

Marsh Posté le 27-08-2010 à 09:25:31    

La variable que tu veux transmettre est calculée à la suite d'une action du visiteur ou c'est une simple variable affichée sur la page A que tu veux aussi afficher sur la page B ?

Reply

Marsh Posté le 27-08-2010 à 18:00:34    

BOnjour aspirateur
 
La variable est une simple variable connue du tableau html de la page A, que je veux exploiter en page B, sans la communiquer par post ou get. Dominique

Reply

Marsh Posté le 28-08-2010 à 00:40:54    

il faut la passer avant le Href.
 
Tout ce qui est de l'HTML "simple" sera affiché par le navigateur, c'est à dire largement après que le traitement PHP soit fait.
 
il ne faut pas oublier que PHP, MySQL sont exécutés (chronologiquement en amont) côté serveur, alors que HTML, CSS, Javascript, Flash/AS sont côté client (pour ne citer que les principaux langages)
 
Typiquement lorsque tu affiches une page HTML, la page est d'abord passée à la moulinette du serveur qui, s'il le juge utile (càd s'il y a des balises <?php et ?> ), va la traiter puis envoyer le résultat du traitement (en général c'est de l'HTML qui est produit, mais ça peut être autre chose) au navigateur.
 
 
Donc typiquement, dans la page A, il faut mettre tout au début

Code :
  1. <?php
  2.     session_start();
  3.     $_SESSION['maVariable'] = 'la valeur';
  4. ?>
  5. <html>
  6. ...
  7. <body>
  8. ...
  9. <a href="pageB.html">page B</a>
  10. ...
  11. </html>


 
 
et dans la page B au tout début :

Code :
  1. <?php
  2.     session_start();
  3. ?>


 
et puis n'importe où tu souhaites exploiter ta variable, un petit <?php echo $_SESSION['maVariable']; ?> qui va bien ;)


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 28-08-2010 à 00:44:11    

Le souci, pour répondre précisément à cette phrase :
 

Citation :


Seulement voilà, j'ai un tableau html , à partir duquel je peux aller vers la page B. Et dans ce tableau il y a un "href=pageB.php". Comment affecter ma variable en session lorsque l'utilisateur va cliquer sur le lien de ce tableau ?


 
tu ne peux rien faire avec simplement 2 pages. Un lien href HTML qui appelle une autre page ne fait qu'appeler une page, et à aucun moment tu lui fais comprendre qu'il y a un traitement de variable.
 
La seule chose envisageable serait *éventuellement* de passer par une page intermédiaire, c.à.d. la session initialisée dans la page A comme je l'ai mis dans mon message précédent, ton lien qui pointe vers une page C dans laquelle on a un session_start et la modif de la variable de session, et qui redirige vers pageB.php ...
 
Ou, faire la modif de la variable dans la pageB directement, mais si tous tes liens HTML appellent la même pageB, tu ne sais pas sur quel lien t'as cliqué ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 28-08-2010 à 08:33:59    

Bonjour NewsletTux
 
Merci pour tes explications, tout ça je le savais. Le pb est bien là :
 

Citation :

Ou, faire la modif de la variable dans la pageB directement, mais si tous tes liens HTML appellent la même pageB, tu ne sais pas sur quel lien t'as cliqué ...


 
Je me rends donc compte que c'est pas possible de faire ce que je veux faire. Mais alors comment être sur que l'utilisateur ne bidouille pas la page A et que du coup je me retrouve avec un paramètre en page B qui n'est pas celui attendu. Ca peut créer des catastrophes, non ? Ou alors il faut que je contrôle tout ce qui arrive en page B, et notamment si l'utilisateur signé a le droit de faire telle action, sur telle donnée ? Pourquoi pas mais ça me semble assez lourd dingue. Alors que si il y avait moyen de passer les paramètres de page en page, en toute sécurité ça serait tout de même plus simple.
 
Comment faites vous pour gérer ces aspects sécurité ?
 
Dominique

Reply

Marsh Posté le 28-08-2010 à 12:31:12    

De toutes façons :
- le HTML est côté client et le PHP côté serveur, donc tu ne peux interférer en RIEN sur l'affichage de l'HTML
- toute donnée envoyée par un navigateur peut potentiellement être dangereuse, et il faut obligatoirement la contrôler.
 
Personnellement, je ne considère pas de telles données comme fiables vu qu'elles peuvent être trafiquées par l'utilisateur (tout comme son adresse IP ou son user agent par exemple).
 
Donc en page B, s'il y a une variable passée du type pageB.php?var=3 il faudra OBLIGATOIREMENT contrôler "var=3" si tu l'utilises.
là par exemple, is_numeric, intval, sprintf("%d" ), plusieurs méthodes existent pour s'assurer d'avoir un entier numérique au final.
 
C'est comme n'importe quel formulaire HTML, si tu fais un menu <select> l'utilisateur lambda ne choisra que parmi les <option> disponibles, alors qu'un utilisateur un peu plus averti sera capable de t'envoyer (en post ou en get) n'iporte quoi, et pas forcément une valeur prévue dans les <option> ...
C'est ça l'HTML :/


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 05-09-2010 à 21:46:23    

La seul façon de résoudre ton problème est de placer un évènement JS sur le clic ton lien, qui fait de l'AJAX (passage par du PHP, mise en session et retour).


---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

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