Autor Zpráva
Glacier
Profil
Toto vypíše "|1"
define("x", $_SESSION[x]);
echo x . "|";
echo $_SESSION[x];

Toto vypíše jen "|"
echo $_SESSION[x];
define("x", $_SESSION[x]);
echo x. "|";

$_SESSION[x] by mělo být v obou případech 1
Toto chování opravdu nechápu jako že když jeden řádek, nezávislý na druhém, přesunu tak to nefunguje a jakto že se konstanta x vůbec nevypíše???
session_start(); tam samozřejmě je.

Prosím o pomoc.
Díky
medden
Profil *
Skús dať všade $_SESSION['x']
Leo
Profil
No ja nevim, ale konstanta je konstanta, ne promenna, Leo
Glacier
Profil
Vyřešeno, byl to konflikt mezi x v session a x jako konstanty....... když jsem dal $_SESSION[y] tak to fachá.
hw3
Profil
Ještě s dovolením doplním Glaciera: Konflikt je v tom, že se volá proměnná $_SESSION[x] bez uvozovek. Takže to udělá následující (v případě, že $_SESSION["x"] je rovno 1):

echo $_SESSION[x]; //vypíše 1
define("x", $_SESSION[x]); //definuje konstantu s hodnotu 1
echo x. "|"; //vypíše správně 1|

takto by to fungovalo. Ale v druhém případě:

define("x", $_SESSION[x]); //do konstanty x přiřadí hodnotu 1
echo x . "|"; // vypíše 1|
echo $_SESSION[x]; //zavolá vlastně proměnnou $_SESSION[1], která není definována, takže nevypíše nic

Takže nebuďte líní a piště klíče při volání pole v uvozovkách (či apostrofech) :-)
Glacier
Profil
Přičemž jsem sice uvozovky doplnit zkusil ale zapomněl jsem je doplnit u nastavování oné session prom. takže se také nevypsalo nic což mě ještě víc zmátlo.

hw3: Takhle přesně se to bohužel nechovalo, ale rozhodně to tím bylo. Mám tam tu session i konstantu na mnoha dalších místech takže kdoví co se tam s tím přesně vlastně dělo.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0