Discussion:
variable de session firefox
(trop ancien pour répondre)
desbutes
2007-07-08 13:23:29 UTC
Permalink
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
Sebastiaan 'CrashandDie' Lauwers
2007-07-08 18:41:36 UTC
Permalink
Post by desbutes
bonjour,
Bonjour,
Post by desbutes
if(isset($_SESSION['number']))
Ca, c'est bon
Post by desbutes
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']}'";
Post by desbutes
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 ;)
Post by desbutes
merci bcp
Derien

S.
Olivier Miakinen
2007-07-08 19:01:26 UTC
Permalink
Post by Sebastiaan 'CrashandDie' Lauwers
Post by desbutes
if(isset($_SESSION['number']))
Ca, c'est bon
Oui.
Post by Sebastiaan 'CrashandDie' Lauwers
Post by desbutes
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
Post by Sebastiaan 'CrashandDie' Lauwers
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.
Post by Sebastiaan 'CrashandDie' Lauwers
Post by desbutes
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).
Post by Sebastiaan 'CrashandDie' Lauwers
$_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.
Post by Sebastiaan 'CrashandDie' Lauwers
Post by desbutes
merci bcp
Derien
Désolé.
Sebastiaan 'CrashandDie' Lauwers
2007-07-09 06:37:43 UTC
Permalink
Post by Olivier Miakinen
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 ?
Post by Olivier Miakinen
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.>
Post by Olivier Miakinen
Post by Sebastiaan 'CrashandDie' Lauwers
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à...
Post by Olivier Miakinen
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...
Post by Olivier Miakinen
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)
Post by Olivier Miakinen
Désolé.
Y'a pas de mal.

S.
Olivier Miakinen
2007-07-09 07:02:05 UTC
Permalink
Post by Sebastiaan 'CrashandDie' Lauwers
Post by Olivier Miakinen
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.
Post by Sebastiaan 'CrashandDie' Lauwers
Post by Olivier Miakinen
Post by desbutes
"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 ?
Post by Sebastiaan 'CrashandDie' Lauwers
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.
Sebastiaan 'CrashandDie' Lauwers
2007-07-10 14:51:19 UTC
Permalink
Post by Olivier Miakinen
Voici quatre exemples pour te convaincre que chaque ' entre "" n'est
qu'un MACHIN quelconque auquel il ne faut pas attribuer de signification
"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).
Post by Olivier Miakinen
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... :/
Post by Olivier Miakinen
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.
Olivier Miakinen
2007-07-10 19:34:52 UTC
Permalink
Post by Sebastiaan 'CrashandDie' Lauwers
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}"
Post by Sebastiaan 'CrashandDie' Lauwers
<?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"]
Post by Sebastiaan 'CrashandDie' Lauwers
echo "ceci est le 'premier' element du tableau: '" . $foo[premier] .
$foo[premier] <==> $foo[1]
Post by Sebastiaan 'CrashandDie' Lauwers
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.
Post by Sebastiaan 'CrashandDie' Lauwers
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é...
Post by Sebastiaan 'CrashandDie' Lauwers
(cela dit, celui
qui fout $tableau["mon$index"] devrait prendre des cours de lisibilité,
j'admets).
[Oui]

(et encore, il faudrait voir le contexte)
Post by Sebastiaan 'CrashandDie' Lauwers
Post by Olivier Miakinen
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.

desbutes
2007-07-08 21:20:31 UTC
Permalink
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
Olivier Miakinen
2007-07-08 21:34:33 UTC
Permalink
Post by desbutes
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.
Post by desbutes
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 ({).
Post by desbutes
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.
Post by desbutes
D'accord?
Modulo ce que j'ai dit plus haut.
Post by desbutes
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.
Post by desbutes
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.
Post by desbutes
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.
Post by desbutes
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.
Post by desbutes
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
Continuer la lecture sur narkive:
Loading...