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 :

Perte de la session


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Perte de la session
    Bonjour,

    Alors voilà, je me heurte à un problème que je n'avais encore jamais rencontré, ainsi je viens vous demander votre aide.

    Actuellement, je développe un site de réservation pour ma boîte.
    J'enregistre toutes les informations concernant la réservation dans les variables de sessions.

    Afin d'éviter que les utilisateurs ne sautent des étapes dans la réservation ( ordre défini par ma boîte ), j'enregistre la page courante dans une variable de session et je vérifie si la page que l'utilisateur souhaite atteindre est "autorisée".

    Petit schéma :

    page 1 => page 2 => page 3 => page 4 => paiement en ligne ( serveur externe ) => page 5

    On ne peut atteindre la page 3 sans au préalable avoir rempli les informations de la page 1 et 2.
    Si on se trouve sur la page 4, on peut retourner sur n'importe quelle page qui lui est "inférieure" ( soit la 1, 2 ou 3 ).

    Dans la dernière phase de réservation, je redirige certaines des informations via POST vers un serveur de paiement en ligne ( qui n'appartient pas à ma boîte ).
    Le serveur de paiement reçoit bien les informations envoyées par POST.
    Après avoir entré ses informations bancaires, qu'importe le résultat, l'utilisateur est redirigé vers le site de réservation.

    Mais une fois revenu vers le site de réservation, les variables de sessions n'existent plus ( tout a été réinitialisé et/ou détuit par je ne sais quel moyen ).
    Et du coup, le site de réservation considère qu'aucune des étapes n'a été validé par le client et le redirige vers la première étape.

    Est ce "normal"?
    Est ce une erreur de programmation de ma part?
    Que puis je faire dans ce genre de situation?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Bonjour,

    C'est normal car au moment où la page est redirigée vers une page avec un nom de domaine différent, la session est supprimée. Les sessions ne marchent que sur le même domaine.

    La solution est de transférer ta session en utilisant le code suivant :

    Envoi ton id de session en faisant quelque chose comme...https://secure.bidule.com/~$user_name/transfer.php?sID=<?php echo session_id();?>

    Et à l'intérieur de ce fichier, met ce code PHP au début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_id($_GET['sID']);
    session_start();
    header("Cache-control: private");
    Puis ce code HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
    <head>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=https://secure.bidule.com/~$user_name/">
    </head>
    <body>
    </body>
    </html>

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour, merci de t'interesser à mon problème.

    Alors si j'ai bien compris, ce morceau de code suivant est censé être inséré dans le script php du serveur de paiement en ligne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_id($_GET['sID']);
    session_start();
    header("Cache-control: private");
    Si c'est le cas, alors je ne peux malheureusement pas mettre ta méthode en place parce que le serveur de paiement en ligne réagit de cette manière ci :

    - mon site de réservation envoie des informations sur le serveur de paiement en ligne
    - le serveur de paiement en ligne analyse les informations et attends les données bancaires qui doivent être saisies par le client
    - le serveur de paiement en ligne vérifie l'existance des identifiants bancaires dans sa base de données
    - le serveur de paiement informe le client de la suite des évènements et redirige ensuite vers mon site de réservation

    Chaque tiret correspond à un script php, et aucun des scripts du serveur de paiement en ligne ne sont modifiables ( parce que ce ne sont pas les miens et qu'en plus, si c'était le cas, ce serait trop facile ).

    Je pensais que la session n'était détruite que lorsque l'utilisateur fermait son navigateur et/ou la supprimait à la mano ( via un lien ou quelque chose dans le genre ).

    __________

    Toutefois, je ne peux m'empêcher de remarquer que cette tournure me semble étrange...

    J'apporte un peu plus de précision au cas actuel ( ça peut peut être aider ).
    Le site de réservation actuel ainsi que le serveur de paiement sont des sites hébergés sur et par le Maroc.

    Il y a peu, j'avais développé exactement le même site mais en France cette fois ci avec le Crédit Mutuel et je n'ai eu aucun problème de ce genre...
    J'arrivais à rediriger des informations de mon site vers le CM et le CM me retournait bien mes informations sans détruire aucune des données présentes dans ma session...

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Bonjour,

    Quel est exactement le système de payement que tu utilise ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Actuellement, j'utilise le système de vérification de données bancaires du site maroctelecommerce.com .

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Points : 342
    Points
    342
    Par défaut
    Il faudrait avant tout savoir quel est le processus exact de leur système de payement. Pour cela je suis allé voir sur leur site mais il y a très peu d'infos techniques. Avec un compte chez eux je suppose que tu dois avoir accès au back-office sur lequel il doit y avoir plus d'infos. Si ça n'est pas le cas, je pense que le mieux pour toi serait de les contacter directement.
    Navré de ne pouvoir faire plus pour t'aider, bon courage.

    Ps: Et si tu réussis à avoir plus d'infos, n'hésites pas à les poster, ça pourra servir pour d'autres utilisateurs.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Me revoilà !

    J'avais pas du tout, mais alors vraiment pas du tout fait gaffe quand je programmais et je viens juste de remarquer que le serveur de paiement en ligne marocain est un site en ASP ...
    Donc je suppose que le problème vient du fait que je passe du PHP vers du ASP...

    Pour palier à ce "problème technique", j'enregistre toutes les variables de ma session dans un fichier texte ( j'aurai pu utiliser autre chose mais bon... ) qui porte le numero de la session via session_id() car elle ne change pas tant que le navigateur ne se ferme pas.

    Ainsi, avant d'aller sur le serveur de paiement, j'enregistre toutes les infos dans session.txt et je le réouvre afin de réenregistrer toutes les variables perdues dans la session qui vient de "redémarrer" ( je vérifie bien que la session porte bien le même numéro afin d'éviter tout désagrément ).

    C'est une solution à la va vite mais bon...
    Si quelqu'un trouve autre chose, faites le savoir !

    Merci d'avance !

Discussions similaires

  1. Perte variable de session
    Par FoxDeltaSierra dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/01/2009, 18h17
  2. Perte de la session au rafraichissement de la page
    Par potpot06 dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2009, 17h10
  3. Réponses: 19
    Dernier message: 24/04/2008, 21h02
  4. Perte de variables session avec IE6.0.28
    Par tom42 dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2007, 18h43
  5. [AJAX/JSP] Perte de la session et de response sous IE
    Par maxbzh56 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/08/2006, 12h04

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