[php][session] valeur modifiée
Résolu
wAx
Messages postés
1596
Date d'inscription
Statut
Membre
Dernière intervention
-
pierre -
pierre -
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:
--> dans la page censée lire cette valeur,
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
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:
- [php][session] valeur modifiée
- Easy php - Télécharger - Divers Web & Internet
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Valeur ascii - Guide
- Formule excel si contient texte alors valeur ✓ - Forum Excel
- Expert php pinterest - Télécharger - Langages
5 réponses
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
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
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:
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 :( :(
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 :( :(
Salut,
Essaies ce petit script set.php (nommes-le set.php):
Ensuite, appelle-le avec ton navigateur avec les url suivantes :
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
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
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:
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
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
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
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
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
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 @+
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 @+