Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 05/11/2012, 18h06   #1
patriciaprovence
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 60
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 61
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 60
Points : 31
Points : 31
Par défaut Aurais-je un problème de session ?

Bonjour,

Ignorant d'où vient mon problème, je suppose que cela est en rapport avec les sessions, mais n'en suis pas vraiment persuadée...

J'utilise l'excellent panier proposé sur ce site qui fonctionne parfaitement.
Une fois le panier rempli, le client clique sur le bouton "commander" qui l'envoie sur la page "valider.php".
Cependant, mes futurs clients devant être identifiés pour valider leur commande, je mets, sur la page "valider.php' qui permet la poursuite de la commande, les quelques lignes ci-dessous :
Code :
1
2
3
4
5
6
7
8
9
<?php
session_start(); 
 
  if (!isset($_SESSION['pseudo'])) {
  //si la variable de session n'existe pas
  //je redirige le client vers le formulaire d'identification
  header('Location: http://xxxxxxx.fr/identification.php');
  //on arrête l'exécution
  exit();}
Ainsi, s'ils ne sont pas identifiés, il vont vers un formulaire "classique" se trouvant sur la page "identification.php" qui leur propose, soit de s'identifier, soit de créer un compte.
Et là, j'ai un problème : dès que l'on est sur la page "identification.php" et avant même d'entrer une quelconque donnée sur le formulaire, mon panier se retrouve vide (j'ai un rappel du contenu du panier dans mon header).

Par contre, s'ils s'étaient identifiés avant de valider leur commande et de poursuivre le processus d'achat, je n'ai aucun problème. Le panier et son contenu continuent normalement leur "voyage".

Je vous précise que j'ai testé ce site en local avec un serveur en php 5.3.6 et sur un serveur "externe" en php 5.2.14 où j'ai un autre site avec rigoureusement le même script, le site fonctionne parfaitement en local et en externe.
Le serveur sur lequel est placé le site qui me pose problème est en php 5.3.15.

L'un ou l'une de vous aurait-il déjà eu ce problème ? ou bien une idée d'où il pourrait provenir ?

Par avance, merci pour votre aide.

Cordialement,



Patricia
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 20h57   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 478
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 478
Points : 21 292
Points : 21 292
Est-ce que tu as bien un session_start() au début de identification.php ?

Est-ce que tu n'aurais pas un mecanisme de destruction de la session sur cette page ?

Essai eventuellement comme ça pour voir :
Code :
header('Location: http://xxxxxxx.fr/identification.php?'.SID);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 21h06   #3
patriciaprovence
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 60
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 61
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 60
Points : 31
Points : 31
Merci de m'avoir répondu...

Citation:
Envoyé par sabotage Voir le message
Est-ce que tu as bien un session_start() au début de identification.php ?
Oui, mais j'avais testé avec et sans session_start()

Citation:
Envoyé par sabotage Voir le message
Est-ce que tu n'aurais pas un mecanisme de destruction de la session sur cette page ?
Non

Citation:
Envoyé par sabotage Voir le message
Essai eventuellement comme ça pour voir :
Code :
header('Location: http://xxxxxxx.fr/identification.php?'.SID);
Cela ne change rien...
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 22h28   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 478
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 478
Points : 21 292
Points : 21 292
Fais un
après le session_start sur chaque page pour voir si l'identifiant de dossier reste le même avant et après.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 17h33   #5
patriciaprovence
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 60
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 61
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 60
Points : 31
Points : 31
Bonjour,

Les réponses gentiment apportées à mon problème ne résolvant rien, j'ai voulu, avant de continuer à faire appel aux membres de ce forum, chercher encore un peu par moi-même...
Après plusieurs heures passées à faire des tests (mon cerveau de sexagénaire ne réfléchit plus aussi vite qu'avant... ) j'ai trouvé !
Le problème était bien ici :
Code :
header('Location: http://xxxxxxx.fr/identification.php');
Si cette ligne de script ne pose aucun problème en php 5.2, c'est elle qui empêchait les variables mises en session de "voyager" normalement en php 5.3.

Moi qui ait toujours privilégié l'url complet dans mes redirections, j'ai fini par comprendre que c'était là que cela clochait... il m'a suffi d'ôter "http://xxxxxxx.fr/" de cette ligne (et de toutes celles des redirections de mon site) et donc, d'écrire :
Code :
header('Location: identification.php');
pour que, sans autre changement, cela fonctionne...

Encore merci à "sabotage" pour le temps qu'il a passé à me répondre.



Patricia
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 10h36   #6
patriciaprovence
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 60
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 61
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 60
Points : 31
Points : 31
Par défaut [PHP 5.3] Aurais-je un problème de session ? - MAINTENANT, C'EST VRAIMENT RÉSOLU

Bonjour,

Je reviens sur ce post car la solution que j'avais trouvée :
Citation:
il m'a suffi d'ôter "http://xxxxxxx.fr/" de cette ligne (et de toutes celles des redirections de mon site) et donc, d'écrire :
Code :
header('Location: identification.php');
pour que, sans autre changement, cela fonctionne...
n'était pas valable dans tous les cas.

En effet, si, pour aller d'une page à l'autre dans mon espace membre, ce renvoi à une identification pour les visiteurs non encore identifiés fonctionnait parfaitement, cela m'a posé problème lors du retour des données provenant de Paypal après règlement, car les données de session ne suivaient pas, une nouvelle identification du visiteur était nécessaire et une nouvelle session se créait.

C'est en cherchant pourquoi j'avais aussi ce problème avec Paypal, que j'ai fini par trouver (la hotline de Paypal n'ayant pu m'aider à solutionner le problème). En effet, ayant deux sites différents dont les paiements se font sur le même compte Paypal, j'ai dû indiquer une ligne de retour vers ma page d'accusé réception de paiement, dans le formulaire d'envoi à Paypal.
J'ai utilisé le même script de formulaire que celui de mon premier site, qui fonctionnait sans problème en php 5.2, et l'ai adapté pour mon second site qui lui est en php 5.3, et cela ne marchait pas.

J'ai fini par trouver la bonne solution que je vous donne, si cela peut servir à quelqu'un.

Dans le formulaire d'envoi à Paypal, au lieu de faire ainsi :
Code :
<input type="hidden" name="return" value="http://nomdusite/membres/paiement_ok.php" >
j'écrivais :
Code :
<input type="hidden" name="return" value="http://www.nomdusite/membres/paiement_ok.php" >
tout fonctionne parfaitement.

Ce sont ces "www." manquants qui étaient la cause de tous mes problèmes de redirection de mon site.




Patricia
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h46.


 
 
 
 
Partenaires

Hébergement Web