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 :

Détruire et recréer une session


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut Détruire et recréer une session
    Salut voici le code simplifié de mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    session_start();
    $order = new Order(session_id());
    $order->sqlSelect(); // récupération d'infos dans une BDD
    if(isset($_POST['send']))	{
    	// Envoi de la commande par mail
    	$order->send();
    	session_regenerate_id();
    	exit();
    }
     
    ?>
    En fait je crée un objet commande avec l'identifiant de session, puis je récupère des infos dans une BDD en fonction de cet identifiant. Le but est de recréer une nouvelle session quand le mail de la commande est envoyé. Ainsi une nouvelle commande est générée avec un nouvel id et l'utilisateur ne peut pas envoyer plusieurs fois l'ancienne commande en rafraichissant la page. Ce code fonctionne très bien en local, l'id de session change bien au rechargement de la page mais il ne fonctionne pas sur mon serveur. D'où ces 2 petites questions

    - quelqu'un aurait-il une idée du paramètre de config qui peut jouer là-dessus ?
    - quelqu'un connait-il un autre moyen de recréer une session (donc avec un nouveau SID) ?

    Je précise que la fonction session_regenerate_id() existe bien sur mon serveur (4.4.2)
    Merci d'avance pour votre aide et a+

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Et un appel de session_destroy() puis session_start() ? D'après un test récent que j'ai pu effectué, il recrée une nouvelle session après avoir détuire la précédente.


    Julp.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    il recrée une session mais avec le même id ^^.

  4. #4
    Membre habitué Avatar de kodokan
    Profil pro
    Lycéen
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 170
    Points
    170
    Par défaut
    Salut

    Et en faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php 
    unset($_SESSION);
    session_destroy();
    ?>
    regarde ici tu trouvera peut-etre ce que tu cherche

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    toujours le même problème, il ne détruit pas la session.
    Je potasse la doc ^^

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Bon finalement j'ai réussi à recréer une session en faisant comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    session_start();
    if(isset($_SESSION['destroy']))	{
    	session_destroy();
    	session_start();
    	session_regenerate_id();
    }
    $order = new Order(session_id());
    $order->sqlSelect(); // récupération d'infos dans une BDD
    if(isset($_POST['send']))	{
    	// Envoi de la commande par mail
    	$order->send();
    	$_SESSION['destroy'] = true;
    	exit();
    }
    ?>
    Cette fois-ci cela fonctionne sur les 2 serveurs. Je suis obligé de mettre session_regenerate_id() sinon il ne détruit pas la session.
    Je laisse à non résolu, si quelqu'un a une idée du paramètre de conf qui peut joué là-dessus cela m'intéresse.
    Bye et merci pour votre aide ^^

  7. #7
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Si tu veux simplement que l'id de session change tu fait juste le session_regenerate_id()

    Je ne vois pas trop l'intéret de supprimer la session pour la recéer 1seconde plus tard.

    session_regenerate_id() ne supprime en rien la session.

    Au cas ou si ca peux t'aider un peu : http://a-pellegrini.developpez.com/t...hp/session-db/

  8. #8
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Je veux aussi supprimer les variables de session ^^

    [edit] Merci pour le lien. C'est d'ailleurs la méthode que j'utilise. [/edit]

  9. #9
    Membre habitué Avatar de kodokan
    Profil pro
    Lycéen
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 170
    Points
    170
    Par défaut
    pour supprimer tes variables de session tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unset($_SESSION);
     
    ou 
     
    $_SESSION = array();

  10. #10
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Oui, en effet je purrais aussi faire comme ca ^^
    Merci pour vos réponses.

  11. #11
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par kodokan
    pour supprimer tes variables de session tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unset($_SESSION);
     
    ou 
     
    $_SESSION = array();
    Surtout pas unset($_SESSION); car ta super globale $_SESSION serait détruite... par contre $_SESSION = array(); oui... .. .

    @ tchaOo°

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

Discussions similaires

  1. détruire une session
    Par Maria1505 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 24/08/2007, 11h26
  2. Détruire une session à la fermeture d'une fenètre.
    Par dell77 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 07/12/2006, 17h12
  3. Détruire une session
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2006, 02h22
  4. Détruire les variables d'une session
    Par kespy13 dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2006, 17h13
  5. [JSP] détruire une session
    Par villeneuvejsp dans le forum Servlets/JSP
    Réponses: 24
    Dernier message: 03/08/2005, 14h44

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