Page 1 sur 1

Session qui prend une valeur différente

Posté : 29 sept. 2008, 09:15
par sam01
Bonjour,

après avoir enregistrer une valeur de session dans un page, $_SESSION['totalttc_port']
je n'ai plus la même valeur dès que je change de page et je n'arrive pas à comprendre pourquoi?

Une chose est sûr c'est que juste avant de changer de page, la valeur de ma session est la bonne :

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 que je passe à la page paiement.php, elle prend une valeur différente.

Et he n'arrive pas à savoir pourquoi.

Pour info, la valeur de registers_global est à 1.

Merci d'avance pour votre aide.

Posté : 29 sept. 2008, 09:24
par caroube
Il ne manque pas un session_start() ?

Posté : 29 sept. 2008, 10:13
par sam01
Ben non...
Ca aurait été trop simple.

Et puis je pense que sans session_start(), ma page aurait planté au moment ou je fais appel à la session $_SESSION['totalttc_port']

Posté : 29 sept. 2008, 14:45
par Invité
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 :

header("Location: http://www.testn.com/paiement.php?pro=livraison");

Croyez-vous que ça peut venir de là ?

Posté : 29 sept. 2008, 15:11
par Ryle
Je peux me tromper, mais je ne pense pas que le problème vienne de là. Le serveur identifie le navigateur de l'utilisateur pour faire suivre la session, et pas la manière dont il a ouvert la page.

En gros, si j'ouvre une session sur un site, que je viens faire un tour sur phpfrance et que je retourne sur mon site, ma session est encore ouverte... donc bien qu'il vaille mieux, à mon avis, utiliser des url relatives lorsque c'est possible, je doute que le problème viennede la :)

Par contre, comme il n'y a pas de exit() après ton header(), php va continuer d'exécuter le code de ta page avant de faire la redirection. Si dans la suite du code tu mets à jour ta variable $_SESSION['totalttc_port'] (ou $totalttc_port si le register globals est à on), alors cette nouvelle valeur sera prise en compte dans la session avant la redirection.

Un exit() après le header() interrompt php juste après la redirection et évite ainsi des traitements inutiles et ce genre de problème :)

Posté : 29 sept. 2008, 15:41
par Invité
Alors là, tu m'as donné une bonne piste. :D
Je ne peux pas faire de test aujourd'hui, mais je testerais dans la semaine.
Merci pour ta remarque pertinente.

Bonne journée.

Posté : 30 sept. 2008, 23:02
par sam01
C'était exactement ça.
Un grand merci.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]