IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Écraser une session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut Écraser une session
    Bonjour,

    j'aimerais savoir si on est obligé de supprimer une session avec unset avant de lui donner une autre valeur.

    Je m'explique :

    A plusieurs reprise je donne une valeur différente à ma session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $_SESSION['totalttc_port'] = $data_null['total_ttc_ref'];
     
     
     
     
    $_SESSION['totalttc_port'] = $data_null['total_ttc_ind'];
    pour que la deuxième valeur de la soit prise en compte est-on obligé de coder de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $_SESSION['totalttc_port'] = $data_null['total_ttc_ref'];
     
    unset($_SESSION['totalttc_port']);
     
    $_SESSION['totalttc_port'] = $data_null['total_ttc_ind'];
    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    a pirori, non ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $_SESSION['toto']=1;//je défini une variable avec une valeur
    $_SESSION['toto']=2;//je redéfini la valeur de la variable
    mais pour ce qui est de la persistance au niveau serveur des mémoires de la variable $_SESSION je n'en sais pas plus.

    ce dont je suis sur, c qu'a temps=t, la variable vaut 1 pour ton script, et qu'a temps=t+1 elle vaut 2,

    ce qui est sur aussi ,est que la $_SESSION, se détruit naturelement, ou avec unset , volontairement,

    a +

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    ben alors je ne comprends pas, d'une page à l'autre la valeur de ma session :

    $_SESSION['totalttc_port']

    est différente ?

    Et je n'arrive pas à savoir pourquoi, un vrai casse-tête ?

    Connaissez une astuce afin que je puisse débugger mon problème.

  4. #4
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    C'est à dire "différente" ? Elle reprend la première valeur voulue ou une autre valeur ?

    Est ce que register_globals est à on ou off ? S'il est à on, il se peut qu'une variable $totalttc_port à qui tu attribut une valeur après avoir donné une autre valeur à $_SESSION['totalttc_port'] modifie cette dernière.

    Sinon on peut voir ton code ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    le code en lui-même est très long.
    J'ai fait des echo et je sais que juste avant le changement de page la valeur de ma session est encore bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    if (!empty($_GET['dir']) and ($_GET['dir'] == 'paiement'))
    {
    include ('connect.php');
     
    $sqlp = sprintf("update lldiffusion_commande set frais_port=%s,total_ttc=%s,etat=%s  where id=%s", quote_smart($_SESSION["frais_port"]), quote_smart($_SESSION['totalttc_port']), quote_smart('paiement'), quote_smart($_SESSION["commande"]));
    $reqp = mysql_query($sqlp) or die('Erreur SQLP !<br>'.$sqlf.'<br>'.mysql_error());
     
    mysql_close();
     
    header("Location: http://www.lldiffusion.com/paiement.php?pro=livraison");
     
    }
    ensuite dès je pase à l'autre page, elle prends une autre valeur.

    elle prends la valeur de data['total_ht']...

  6. #6
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    As tu regardé la valeur de register_globals ?

    Sinon pour débugger tu peut désactiver ton code par des commentaires et en réactiver par petits bouts pour ainsi voir de quelle partie du code peut provenir le problème...

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    quelle doit être la valeur de register_globals ?
    Comment connaître cette valeur ?

  8. #8
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    la valeur est à 1.
    Est-ce la bonne valeur ?

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    j'ai entendu dire que lorsque l'on change de page en spécifiant l'adresse absolue,
    php ne passait pas la session car il considère que c'est une faille de sécurité.

    Etes-vous au courant.

    C'est exactement ce que je fais dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    header("Location: http://www.testn.com/paiement.php?pro=livraison");
    Croyez-vous que ça peut venir de là ?

  10. #10
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    La valeur de register_globals devrait être à Off (pour moi 1 signifierait plutôt On ?).

    Pour l'histoire du header je n'en ai jamais entendu parler, en tout cas le manuel php précise qu'il faut une URI absolue comme argument de Location mais que certains navigateurs acceptent une URI relative.

    Par contre l'appel à header(Location: ...) permet de remettre à zéro la variable surperglobale $_POST -> http://php.developpez.com/faq/?page=...s-form-refresh.

    Essaye avec une URI relative pour tester...

  11. #11
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 908
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 908
    Points : 420
    Points
    420
    Par défaut
    ça y est.
    On m'a donné la réponse sur un autre forum.
    Une erreur de débutant on va dire...

    Il manquait juste l'exit() après le header...
    Le php continuait au fait à exécuter du code après le header...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer une session (connection)
    Par sbbn1 dans le forum ASP
    Réponses: 2
    Dernier message: 07/05/2004, 18h57
  2. Réponses: 13
    Dernier message: 16/04/2004, 12h00
  3. [debutant][jsp]Passage d'entier avec une session sans cookie
    Par o151181 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/02/2004, 18h22
  4. Déconnexion d'une session Win2k
    Par lamasse dans le forum C++Builder
    Réponses: 3
    Dernier message: 02/10/2003, 08h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo