[php][session] valeur modifiée

Résolu/Fermé
wAx Messages postés 1590 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 - 19 nov. 2006 à 00:53
 pierre - 19 mai 2007 à 05:20
Bonjour à tous,

J'essaye de stocker une url en session pour proposer un retour sur certaines autres pages (inutile de me parler du referer ou du history.go(-1), j'ai reellement besoin que certaines pages remontent leur url pour que d'autres les utilisent)

le probleme est le suivant:
-->dans la page qui stocke l'url en session, la syntaxe est la suivante:
$_SESSION["navigation"] = "/categorie.php?c=".$_GET["c"]."&p=".$_GET["p"];


echo $_SESSION["navigation"]; 
me revoit bien
/categorie.php?p=0&c=601



--> dans la page censée lire cette valeur,
echo $_SESSION["navigation"]; 
me renvoit
/categorie.php?p=&c=

Comme si la valeur du get n'etait pas présente. j'ai fait divers tests d'affichage et je n'y comprends rien.

Ma seule hypothese est que le get soit appelé par référence et non pas par valeur ce qui ferait que la valeur n'existe pas reellement dans la variable de session. J'ai beau chercher, je tourne en rond.

Un grand merci à ceux qui pourront m'aider

wAx
A voir également:

5 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
19 nov. 2006 à 10:09
Salut,

Il semblerait plutôt que tu refais l'initialisation de la variable de session alors
que les variables c et p ne sont pas définies en $_GET.
Même si $_GET était une référence, la fonction de concaténation ne contient que
des caractères et se moque de l'origine des chaînes concaténées.

A+, crabs
0
wAx Messages postés 1590 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 202
19 nov. 2006 à 11:24
Salut,

Afin d'éviter ce cas de figure, dans la page qui doit retrouver la valeur, j'affiche la variable de session dès le début de la page. Voici mon début de page:
<?php
session_start();

foreach ($_SESSION as $nomvar => $valeurvar)
	echo $nomvar."=".$valeurvar."<br>";


Comme tu le vois, je ne retouche pas à cette variable. Elle n'est donc pas réinitialisée come tu le craignais.

Il y a t'il possibilité d'avoir un accès direct à ce qui est contenu dans les variables de sessions ? Par exemple, j'ai tenté un phpinfo() mais il n'affiche pas les variables de session

Merci de ton aide, je deviens fou :( :(
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
19 nov. 2006 à 14:45
Salut,

Essaies ce petit script set.php (nommes-le set.php):
<?php
session_start() ;
header( "Content-type: text/plain" ) ;
if ( array_key_exists( 'a', $_GET ) )
    {
    $_SESSION['a'] = $_GET['a'] ;
    $_SESSION['last_set'] = 'set.php?a='.$_GET['a'] ;
    }
else if ( array_key_exists( 'b', $_GET ) )
    {
    $_SESSION['b'] = $_GET['b'] ;
    $_SESSION['last_set'] = 'set.php?b='.$_GET['b'] ;
    }
echo "USE set.php?a= to set a in session\n" ;
echo "USE set.php?b= to set b in session\n" ;
echo "_SESSION[] = " ; print_r( $_SESSION ) ;
?>

Ensuite, appelle-le avec ton navigateur avec les url suivantes :
..../set.php
..../set.php?a=la_valeur_de_a
..../set.php?b=la_valeur_de_b
..../set.php

Est-ce que tout te parait normal, en particulier la valeur de last_set dans la
session construite par concaténation depuis un $_GET.

A+, crabs
0
wAx Messages postés 1590 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 21 novembre 2011 202
19 nov. 2006 à 15:25
Ca fonctionne !!

Grace à tes indications, tu m'as doné l'idée de faire une page tiere dans laquelle j'affiche simplement le contenu de la session.

A coté, j'ai pris ma page qui initialise la fameuse variable et je suis parti de ton code (qui fonctionnait) et j'ai peu à peu remis tous les elements qui constituent ma page.

J'ai ainsi isolé la ligne de code qui fouttait le bazar:

echo "    <td rowspan=\"2\" valign=\"top\"><img src=\"????\" width=\"100\" height=\"154\" vspace=\"11\" hspace=\"7\"></td>\n";


Comme mon site est en dev et que je n'ai pas encore tous les objets de la charte graphique, j'avais mis "????" comme chemin d'image en attendant. Et bien figure toi que cet echo là me fiche en l'air ma variable de session lorsqu'elle est construite à partir du Get.
Meme si j'ai isolé la cause du probleme, il m'est impossible de comprendre le lien de cause à effet. En quoi cette ligne est elle censée avoir une telle consequence ?

En la remplaçant par
echo "    <td rowspan=\"2\" valign=\"top\"><img src=\"\" width=\"100\" height=\"154\" vspace=\"11\" hspace=\"7\"></td>\n";

Tout est parfait. Et dire que ça fait des heures que je cherche sans comprendre.

Un grand merci pour m'avoir mis sur la piste et si tu sais pkoi ce comportement, je suis preneur.

A bientot
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
19 nov. 2006 à 15:59
Salut,
Effectivement le img avec les ???? appelle le script courant avec des arguments
vide. Typiquement, si tu ne testes pas que les c et p sont effectivement affectées par
le biais de l'url, tu devais faire ta concaténation avec des valeurs vides et mettre
à jour la session avec cette chaîne incorrecte.

Avant d'utiliser un $_GET ou $_POST il vaut mieux vérifier que la variable est
effectivement définie, d'où l'utilisation du array_key_exists() dans le petit script
d'exemple.

A+, crabs
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salut,

j'ecoute les crabs en ce moment, un groupe de lyon de année 90 du pure psychobilly, un bon groupe mais le chanteur chante faux enconcert, par contre sur vinyl, c'est trop bon, remarque si cela se trouve, vous n'en avez rien à foutre de mes petites joies musicales, en fait j'ai tapez crabs sur mon clavier et je suis tombé sur vous.
donc bonne continuation, merci de m'avoir lu et je vous souhaite que du bonheur @+
0