Session: envoi de variables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Session: envoi de variables

par Mogz » 22 oct. 2006, 23:29

Je crois que j'ai compris mon erreur et je pense que ce que je veux faire n'est pas possible avec les sessions.

J'ai utilisé la methode des sessions pour le numero client c'est quand même mieux niveau securité :?

Merci de votre aide.

par Mogz » 22 oct. 2006, 18:45

Je post le lien vers ma page (je viens juste de la passer sur le ftp et toutes mes requetes étaient en oracle donc ca plante partout). Ceci dit elle montre mon menu composé de trois elements "Gromiz, Guillaume, Choubinou":

http://www.gromiz.com/Ecommerce/Php/exo5.php


Lorsque que je clique sur l'element du menu choubinou, j'obtient une nouvelle page php exo5 avec les variables

EX=1
NUM=1
IDC=268313357 (numero de client fixé par rdm() )
M=0

J'aimerais grace au session (ou autre) pouvoir enlever les variables qui passe par l'url pour les faire passer en interne.

j'arrive donc à les declarer par exemple EX=0 au debut.

session_start() ;
$_SESSION['EX'] = '0';

seulement il faut que EX change au fur et a mesure des choix de l'utilisateur.
Prenons l'exemple du panier, si l'utilisateur veut aller voir son panier il faut que EX change de valeur et prene la valeur 5, de plus je veux que ce changement de valeur se fasse lorsque que l'utilisateur clique sur le lien 'Mon panier'.

Schemtiquement ca donnerais:

onPress(monBouttonPanier)
{
$_SESSION['EX']=5;
go to url: exo5.php;
//Refresh de la page avec la nouvelle valeur de EX
}

Peut etre que ce n'est pas avec les sessions que l'on peut faire ca... Je veux juste trouver une solution pour que les variables arretent de passer par l'url.

J'espere que c'est plus clair...

Merci en tout cas pour tes reponses Cyrano, tu me clarifies certaines notions en php.

PS: hmmm en faite je crois que le session ne m'aidera que pour l'ID Client (IDC) qui lui ne change pas en cours de route, donc je peux facilement le fixer au depart avec mon rdm() pour les clients non enregistré et le changer si le client se connect.

Comment faire alors pour virer toutes ces variables disgratieuses de la barre de naviguation?

par Cyrano » 22 oct. 2006, 18:16

Il faudrait distinguer la session (qui se passe sur le serveur) des évènements (un clic sur un lien ou un bouton) qui se passe coté client et pour lequel PHP n'intervient pas.

Essaye de décrire ce que tu veux faire de façon aussi claire, complète et simple que tu le peux.

par Mogz » 22 oct. 2006, 17:19

Je crois que j'ai eu un leger probleme!

L'authentification cay tray mal :oops: :oops: :oops:


:arrow: oui oui je sors...

par Invité » 22 oct. 2006, 17:15

Merci de ta reponse Cyrano,

Mon session_start(); est en debut de ma page php et recupera toutes mes variables de sessions (en utilisant $_SESSION['MON IDENTIFIANT']).

Je cree mes variables de session avec leurs valeurs par default mais après je n'arrive pas à changer leurs valeurs au moment du clic sur un lien.

J'aimerais savoir concretement en php ca donne quoi pour alimenter mes variables de session quand je clique sur un lien? je le met à quel endroit ce changement de valeur de mes variables?


Merci d'avance

Guillaume.

par Cyrano » 22 oct. 2006, 09:17

Salut,
on envoie pas de variables de session via l'url. Il faut également savoir que si tu appelles la page elle-même en variant les paramètres dans l'url, même si c'est en apparence la même page, c'est en pratique une page différente qui va se charger. Le mécanisme des sessions est donc tout à fait utilisable dans ce cas là aussi.

Un autre détail important : session_start() démarre ou prolonge une session : on y récupère rien du tout. La session, c'est un contenant, rien d'autre et si tu as bien un session_start() à chaque fois au départ, ton contenant est toujours là avec le contenu que tu y auras mis précédemment.

Donc si dans ton code tu crées et alimentes des variables de session, lorsque tu arrives sur une nouvelle page (y compris si c'est la même url chaque fois), tes variables de session sont toujours là avec leur contenu.

Session: envoi de variables

par Mogz » 22 oct. 2006, 02:46

Bonsoir,

J'ai un problème technique que j'aimerais resoudre en Php.

J'utilise actuellement la methode qui consiste à faire passer mes variables par l'url. Comme dans l'exemple suivant:
<?php

$i=0;

define('START', $i++);
define('FAMILLE', $i++);
define('AJOUTER', $i++);

       /** ETC ETC **/

$EX     = isset($_REQUEST['EX'])       ? $_REQUEST['EX']      : 0;
$IDP    = isset($_REQUEST['NUMP'])  ? $_REQUEST['NUMP']  : 0;
$IDC    = isset($_REQUEST['IDC'])     ? $_REQUEST['IDC']    : rand();
$NUMC = isset($_REQUEST['NUMC'])  ? $_REQUEST['NUMC'] : 1;
$M       = isset($_REQUEST['M'])        ? $_REQUEST['M']       : 0;

switch($EX)
{
 case START       : start  ( $IDC , $M );
                    break;
 case FAMILLE     : liste  ( $IDC , $M );
                    break;
 case AJOUTER     : ajoute ( $IDC , $IDP , $M );
                    break;
             
            
             /** ETC ETC ETC .... **/
}

function menu_d($item_ctrl, $url_ctrl, $idc , $M)
{
 $i = 0;
 $item_ctrl[$i]='MonPanier';
$url_ctrl[$i++]='../Php/exo5.php?EX='.PANIER."&IDC=$idc&M=$M";
 
 $item_ctrl[$i]='S\'enregistrer';
$url_ctrl[$i++]='../Php/exo5.php?EX='.CLIENT."&IDC=$idc&M=$M";
 
 $item_ctrl[$i]='Connexion';
$url_ctrl[$i++]='../Php/exo5.php?EX='.LOG_IN."&IDC=$idc&M=$M";
}

?>
Mais j'aimerais arrêter de passer ces variables par l'url (question de sécurité et d'esthétisme)

Je me suis donc renseigner sur le net et j'ai lu qu'il fallait utiliser les variables de sessions comme ceci:
<?php
session_start();
$_SESSION['EX'] = 'BIDULE';
$_SESSION['ID'] = 'CHOSE';
?>
Seulement dans les differents tutoriaux que j'ai pu lire, ce principe se base sur des formulaires que l'on envoit d'une page php à l'autre et que l'on recupere avec le session_start(); etc...

Dans mon cas je n'ai qu'une seule page php: exo5.php qui appele chacune de mes functions selon les variables transmises par l'url. J'aimerais savoir comment faire pour envoyer les valeurs de mes variables de session avec l'url?


J'espere que c'est assez clair, si vous ne comprenez pas tout n'hesitez pas à demander.



Merci d'avance (et bonne nuit),

Guillaume.