Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 13h01   #1
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 1
Points : 1
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.
poissonjone77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 18h51   #2
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
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 :
1
2
3
session_id($_GET['sID']);
session_start();
header("Cache-control: private");
Puis ce code HTML

Code :
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>
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 09h48   #3
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 1
Points : 1
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 :
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...
poissonjone77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 11h35   #4
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Bonjour,

Quel est exactement le système de payement que tu utilise ?
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 11h48   #5
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 1
Points : 1
Actuellement, j'utilise le système de vérification de données bancaires du site maroctelecommerce.com .
poissonjone77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 14h47   #6
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
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.
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h48   #7
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 1
Points : 1
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 !
poissonjone77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web