Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable de session firefox

8 réponses
Avatar
desbutes
bonjour,
J'ai cherché un peu partout concernant firefox et sa gestion des
sessions mais ,en vain je poste
j'ai un script inscription.php dans lequel je crée 3 variables de
sessions $_SESSION[truc]$_SESSION[truc1]$_SESSION[truc2] et un
formulaire.
UNe autre page s'occupe de l'insert dans table mysql des valeurs du
form de la premiere page.Le session start() est active dans les deux
pages et alors que dans IE7 tout fonctionne ,dans FIREFOX ,une des 3
variables de session n'est pas reconnue.
Lorsque j'utilise l'extension IE TAB DANS FIREFOX CA MARCHE...
que peut donc t-il se passer dans Firefox pour que cette variable ne
passe pas ?
page1
$monnumero=$_POST['rne_ecole'];
$_SESSION['number']=$monnumero;
echo" inscription.php , le rne est
'$_SESSION[number]'<br />";/la variable s'affiche

page2
pour controiler j'ai rajouté ces lignes
if(isset($_SESSION['number']))
{
echo"la variable de session rne est '$_SESSION[number]' ";

}
else
{
echo "la variable n'est pas définie";

}
et la variable '$_SESSION[number]' est reconnue comme non définie
merci bcp

--

cordialement
desbutes

8 réponses

Avatar
Sebastiaan 'CrashandDie' Lauwers
desbutes wrote:
bonjour,


Bonjour,

if(isset($_SESSION['number']))


Ca, c'est bon

echo"la variable de session rne est '$_SESSION[number]' ";


Mais, c'est là que ça part en sucette ;)

echo "La variable de session rne est '{$_SESSION['number']}'";

et la variable '$_SESSION[number]' est reconnue comme non définie


Normal, $_SESSION[number] fait référence à l'indice du tableau number,
qui est considéré comme une constante, parceque pas entouré de quotes...

$_SESSION['number'] fonctionnera bien mieux ;)

merci bcp


Derien

S.

Avatar
Olivier Miakinen
Le 08/07/2007 20:41, Sebastiaan Lauwers répondait à desbutes :

if(isset($_SESSION['number']))


Ca, c'est bon


Oui.

echo"la variable de session rne est '$_SESSION[number]' ";


Mais, c'est là que ça part en sucette ;)


Non, pas du tout ! Si ce n'est peut-être l'espace avant le guillemet
(mais je ne suis pas sûr que ça gêne), cette syntaxe est parfaitement
correcte.

La chaîne entre guillemets doubles contient :
1) la séquence "la variable de session rne est "
2) un guillemet simple "'"
3) un élément de tableau "$_SESSION[number]"
4) un guillemet simple "'"
5) une espace " ".

La syntaxe utilisée en (3) est en elle-même parfaitement valide :
http://www.php.net/manual/fr/language.types.string.php#language.types.string.parsing.simple

echo "La variable de session rne est '{$_SESSION['number']}'";


Oui, cette syntaxe est correcte aussi, mais ni plus ni moins que celle
sans accolades et sans guillemets supplémentaires.

et la variable '$_SESSION[number]' est reconnue comme non définie


Normal, $_SESSION[number] fait référence à l'indice du tableau number,
qui est considéré comme une constante, parceque pas entouré de quotes...


Nenni. Les « quotes » comme tu dis sont bien présents, au début et à la
fin de la chaîne (comme pour toute chaîne de caractères, d'ailleurs).

$_SESSION['number'] fonctionnera bien mieux ;)


Seulement si tu rajoutes des accolades. Sans les accolades, il ne *faut*
pas rajouter de guillemets simples en plus des guillemets doubles.

merci bcp


Derien


Désolé.


Avatar
desbutes
RE
merci de vos réponses

if(isset($_SESSION['number'])) -> si la syntaxe est bonne ,et si la
variable était définie ,le script m'aurait affiché au moins "La
variable de session rne est" avec rien de plus car là ma syntaxe est
peut être mauvaise
Or ce n'est pas le cas, car il me dit qu'elle n'est pas définie.
J'ai essayé les deux écritures et il me dit tjs que ma $_SESSION[]n'est
pas définie
Mais sinon pour récapituler ce que vous avez écrit
Pour afficher une variable du type $GET_[] $POST_[] $SESSION[] dans une
chaîne de caractères , on a le choix entre
echo" texte "{$GET_['variable']}" fin texte ";
ou
echo" texte '$GET_[variable]' fin texte ";
D'accord?
Je n'ai plus sous Firefox qu'a faire des champs "hidden" pour passer mes
variables mais c'est long
et surtout ca me fait moins avancer dans le php

et ca ne me dit pas pourquoi ca fonctionne sous IE7 ET PAS SOUS firefox
Moi qui prone Firefox autour de moi....
Olivier
tu dis qu'il ne faut pas rajouter de quotes simples à l'interieur de

quotes doubles ,mais dans echo" texte '$GET_[variable]' fin texte ";
Il y a bien des quotes simples à l'intérieur de quotes doubles?
bon en tout cas MERCI

--

cordialement
desbutes

Avatar
Olivier Miakinen

if(isset($_SESSION['number'])) -> si la syntaxe est bonne ,et si la
variable était définie ,le script m'aurait affiché au moins "La
variable de session rne est" avec rien de plus car là ma syntaxe est
peut être mauvaise
Or ce n'est pas le cas, car il me dit qu'elle n'est pas définie.
J'ai essayé les deux écritures et il me dit tjs que ma $_SESSION[]n'est
pas définie


Je n'ai pas la réponse à ta question initiale, rappelée ici. Je réponds
juste au reste.

Mais sinon pour récapituler ce que vous avez écrit
Pour afficher une variable du type $GET_[] $POST_[] $SESSION[] dans une
chaîne de caractères , on a le choix entre
echo" texte "{$GET_['variable']}" fin texte ";


Non, là tu auras une erreur de syntaxe (après la première chaîne
" texte " l'interpréteur devrait attendre un point-virgule (;) ou
un point (.) mais pas une accolade ({).

ou
echo" texte '$GET_[variable]' fin texte ";


Oui, sauf que c'est $_GET et pas $GET_. Et encore une fois je séparerais
l'instruction « echo » du premier guillemet par une espace.

D'accord?


Modulo ce que j'ai dit plus haut.

Je n'ai plus sous Firefox qu'a faire des champs "hidden" pour passer mes
variables mais c'est long
et surtout ca me fait moins avancer dans le php



De même que tu devrais insérer des espaces entre les instructions pour
rendre ton code plus lisible, tu devrais insérer des lignes vides entre
ce que tu cites et ce que tu écris pour rendre tes articles plus lisibles.

et ca ne me dit pas pourquoi ca fonctionne sous IE7 ET PAS SOUS firefox
Moi qui prone Firefox autour de moi....


Pas d'idée.

Olivier



Tu cites Sebastian, là ? Pourtant il n'a pas écrit ça. Ou alors c'est
que tu veux t'adresser à moi, mais là encore cette façon de faire n'est
pas très lisible.

tu dis qu'il ne faut pas rajouter de quotes simples à l'interieur de
quotes doubles ,


Je n'ai jamais dit ça. Et Sebastian non plus d'ailleurs.

mais dans echo" texte '$GET_[variable]' fin texte ";
Il y a bien des quotes simples à l'intérieur de quotes doubles?


Oui, il y a. Et comme j'ai dit que cette syntaxe était correcte (du
moment que le tableau s'appelle $GET_ et pas $_REQUEST), cela ne me
choque pas. Quant à Sebastian, ce qui le choquait c'était le contraire :
il voulait rajouter encore des guillemets simples et des accolades.


Cordialement,
--
Olivier Miakinen


Avatar
Sebastiaan 'CrashandDie' Lauwers
Olivier Miakinen wrote:

Non, pas du tout ! Si ce n'est peut-être l'espace avant le guillemet
(mais je ne suis pas sûr que ça gêne), cette syntaxe est parfaitement
correcte.


Ah ?


La syntaxe utilisée en (3) est en elle-même parfaitement valide :
http://www.php.net/manual/fr/language.types.string.php#language.types.string.parsing.simple


Et bha, merci de me sortir de mon ignorance... J'avoue que je n'avais
jamais vu cette façon de faire, et c'est pour ça que j'en ai conclus
d'une mauvaise utilisation... Surtout quand il a signalé:

<cit.>
et la variable '$_SESSION[number]' est reconnue comme non définie
</cit.>

echo "La variable de session rne est '{$_SESSION['number']}'";


Oui, cette syntaxe est correcte aussi, mais ni plus ni moins que celle
sans accolades et sans guillemets supplémentaires.


J'ai toujours utilisé celle-ci, j'étais dans l'ignorance totale que le
fait d'enfermer un tableau dans des simples quotes, eux mêmes dans des
doubles quotes, permettait de l'afficher correctement...

Je me permets cependant de dire, que de mon point de vue de neuneu
invétéré, qu'utiliser la même syntaxe (e.g.: $tableau['clef'], avec
guillemets simples dedans et tout et tout), et donc d'uniformiser le
code peut être plus intéressant que d'avoir des différences minimes ça
et là...

Nenni. Les « quotes » comme tu dis sont bien présents, au début et à la
fin de la chaîne (comme pour toute chaîne de caractères, d'ailleurs).


Mouais...

Seulement si tu rajoutes des accolades. Sans les accolades, il ne *faut*
pas rajouter de guillemets simples en plus des guillemets doubles.


cf ma remarque au dessus (autant "Mouais..." que celle encore au dessus)

Désolé.


Y'a pas de mal.

S.


Avatar
Olivier Miakinen

La syntaxe utilisée en (3) est en elle-même parfaitement valide :
http://www.php.net/manual/fr/language.types.string.php#language.types.string.parsing.simple


Et bha, merci de me sortir de mon ignorance... J'avoue que je n'avais
jamais vu cette façon de faire, et c'est pour ça que j'en ai conclus
d'une mauvaise utilisation...


Si ça peut te rassurer, tu n'es pas le seul. Moi-même j'y ai regardé à
deux fois en lisant son article, pour vérifier si oui ou non sa syntaxe
était correcte. Note que j'ai regardé d'aussi près ta proposition de
remplacement pour vérifier si elle était correcte, elle aussi. Les deux
le sont.

"la variable de session rne est '$_SESSION[number]' "



[...] j'étais dans l'ignorance totale que le
fait d'enfermer un tableau dans des simples quotes, eux mêmes dans des
doubles quotes, permettait de l'afficher correctement...


Mais l'élément de tableau n'est *pas* enfermé dans des guillemets
simples ! Ceux-ci font juste partie de la chaîne de caractères entre
guillemets doubles, à côté de l'élément de tableau !

Voici quatre exemples pour te convaincre que chaque ' entre "" n'est
qu'un MACHIN quelconque auquel il ne faut pas attribuer de signification
particulière :
"MACHIN"
"'"
"la variable de session rne est MACHIN$_SESSION[number]MACHIN "
"la variable de session rne est '$_SESSION[number]' "

Dans le troisième exemple, dirais-tu que c'est le fait que le tableau
soit enfermé dans des MACHIN eux-mêmes dans des " qui en change la
syntaxe ?

Je me permets cependant de dire, que de mon point de vue de neuneu
invétéré, qu'utiliser la même syntaxe (e.g.: $tableau['clef'], avec
guillemets simples dedans et tout et tout), et donc d'uniformiser le
code peut être plus intéressant que d'avoir des différences minimes ça
et là...


C'est un point de vue défendable, je suis entièrement d'accord avec
toi sur ce point. Et là encore tu n'es pas le premier à trouver cette
syntaxe plus lisible. Quoi qu'il en soit c'est surtout une question de goût.



Avatar
Sebastiaan 'CrashandDie' Lauwers
Olivier Miakinen wrote:

Voici quatre exemples pour te convaincre que chaque ' entre "" n'est
qu'un MACHIN quelconque auquel il ne faut pas attribuer de signification
particulière :
"MACHIN"
"'"
"la variable de session rne est MACHIN$_SESSION[number]MACHIN "
"la variable de session rne est '$_SESSION[number]' "


Ok, donc si je comprends bien, quand un $tableau est dans une chaine de
caractères parsée ("", ou HEREDOC), il ne faut plus mettre de simples
quotes pour limiter la nom de la clef, c'est ça ?

Alors qu'est ce qui se passe si j'ai ceci:

<?php

define ('premier', 1);
$foo = array ('premier element',
'premier' => 'premier element',
'deuxieme element',
'deuxieme' => 'deuxieme element');

echo "ceci est le 'premier' element du tableau: '$foo[premier]' <br />n";
echo "ceci est le 'premier' element du tableau: '" . $foo[premier] .
"'<br />n";

?>

Est-ce que c'est la constante qui prend le dessus, parceque là ça
devient franchement trouble, j'avoue... Je reste persuadé que le fait
d'encapsuler tous les tableaux dans des accolades, et la clef d'index
dans des simples ou doubles quotes, dépendant de ce dont on a besoin
(clef d'index variable avec partie fixe, genre $tableau["mon$index"]),
et aucun quotes du tout quand c'est une valeur numérique ou une
constante, bha ça reste quand même bien plus lisible... (cela dit, celui
qui fout $tableau["mon$index"] devrait prendre des cours de lisibilité,
j'admets).

Dans le troisième exemple, dirais-tu que c'est le fait que le tableau
soit enfermé dans des MACHIN eux-mêmes dans des " qui en change la
syntaxe ?


Bien sûr que non, c'est juste que je réfléchis pas assé parfois... :/

C'est un point de vue défendable, je suis entièrement d'accord avec
toi sur ce point. Et là encore tu n'es pas le premier à trouver cette
syntaxe plus lisible. Quoi qu'il en soit c'est surtout une question de goût.


word

S.

Avatar
Olivier Miakinen

Ok, donc si je comprends bien, quand un $tableau est dans une chaine de
caractères parsée ("", ou HEREDOC), il ne faut plus mettre de simples
quotes pour limiter la nom de la clef, c'est ça ?


C'est exactement ça. Il y a déjà une paire de guillemets, pas la peine
d'en rajouter.

En résumé, les deux syntaxes suivantes sont équivalentes :
$_SESSION["number"]
"$_SESSION[number]"

Le fait de pouvoir mettre les guillemets à deux endroits me fait
penser à un phénomène équivalent pour les accolades, les deux syntaxes
suivantes étant elles aussi équivalentes :
"${variable}"
"{$variable}"

Alors qu'est ce qui se passe si j'ai ceci:

<?php

define ('premier', 1);
$foo = array ('premier element',
'premier' => 'premier element',
'deuxieme element',
'deuxieme' => 'deuxieme element');

echo "ceci est le 'premier' element du tableau: '$foo[premier]' <br />n";


"$foo[premier]" <==> $foo["premier"]

echo "ceci est le 'premier' element du tableau: '" . $foo[premier] .


$foo[premier] <==> $foo[1]

Est-ce que c'est la constante qui prend le dessus, parceque là ça
devient franchement trouble, j'avoue...


Non, concernant ton premier exemple, la constante ne peut pas être
interprétée dans une chaîne de caractères. Dans le deuxième exemple,
bien sûr, elle l'est.

Je reste persuadé que le fait
d'encapsuler tous les tableaux dans des accolades, et la clef d'index
dans des simples ou doubles quotes, dépendant de ce dont on a besoin
(clef d'index variable avec partie fixe, genre $tableau["mon$index"]),
et aucun quotes du tout quand c'est une valeur numérique ou une
constante, bha ça reste quand même bien plus lisible...


Question d'habitude. Il y a en a qui ne supportent pas la construction
« test ? val1 : val2 » et d'autres qui ont horreur du « switch() », tout
simplement parce qu'ils ne l'utilisent pratiquement jamais et n'ont donc
pas l'expérience intuitive de ce que cela fait. Je suppose qu'il en va
de même pour la syntaxe HEREDOC.

Pour ma part, c'est la syntaxe avec accolades qui me semble moins
intuitive et qui me demande souvent un effort de lecture un peu plus
poussé...

(cela dit, celui
qui fout $tableau["mon$index"] devrait prendre des cours de lisibilité,
j'admets).


[Oui]

(et encore, il faudrait voir le contexte)

Dans le troisième exemple, dirais-tu que c'est le fait que le tableau
soit enfermé dans des MACHIN eux-mêmes dans des " qui en change la
syntaxe ?


Bien sûr que non, c'est juste que je réfléchis pas assé parfois... :/


ÀMHA, ce n'est certainement pas une question de manque de réflexion,
mais plutôt de manque d'expérience de cette syntaxe.