Autor | Zpráva | ||
---|---|---|---|
Pat Profil * |
#1 · Zasláno: 17. 2. 2007, 23:24:11
Ahoj,
při psaní aplikace jsem chtěl využít mechanismus sessions. Mám nastaveno automatické spouštění session (abych nemusel všude spouštět session_start ()) - jedná se o několik skriptů - něco jako nastavení jazyka, přihlášení uživatele, ... . Bohužel při nastavování a čtení proměnných v $_SESSION nevidím všechny. Zajímavý je výpis $GLOBALS (viz níže), což se zdá že je důvod. Proč se uvnitř funkce $_SESSION používá jako lokální pole, když se podle všech manuálů jedná o "superglobální" pole? Z logu je patrné, že session_id je stále stejné. Výpis $GLOBALS: [0] => Array ( [GLOBALS] => Array *RECURSION* [_POST] => Array ( [thisLoginField] => pat [thisPasswordField] => xxx [submitEnterUserForm] => přihlaš ) [_GET] => Array ( ) [_COOKIE] => Array ( [PHPSESSID] => 84cc30eb12e069923ae0a3629b871139 ) [_FILES] => Array ( ) [_SESSION] => Array ( [firstname] => pat [login] => pat [lastname] => vloženýtext ) [_REQUEST] => Array ( [thisLoginField] => pat [thisPasswordField] => xxx [submitEnterUserForm] => přihlaš [PHPSESSID] => 84cc30eb12e069923ae0a3629b871139 ) [logfile] => c: empsprt.log [_SESSI0N] => Array ( [actionoutput] => OK [language] => cs ) [link] => Resource id #11 [thisLogin] => pat [thisPassword] => xxx [sql] => SELECT * FROM user WHERE login = 'pat' [result] => Resource id #18 [numberOfRows] => 1 ) [1] => Array ( [thisLoginField] => pat [thisPasswordField] => xxx [submitEnterUserForm] => přihlaš ) [2] => Array ( ) [3] => Array ( [PHPSESSID] => 84cc30eb12e069923ae0a3629b871139 ) [4] => Array ( ) [5] => Array ( [firstname] => pat [login] => pat [lastname] => vloženýtext ) [6] => Array ( [thisLoginField] => pat [thisPasswordField] => xxx [submitEnterUserForm] => přihlaš [PHPSESSID] => 84cc30eb12e069923ae0a3629b871139 ) [7] => c: empsprt.log [8] => Array ( [actionoutput] => OK [language] => cs ) [9] => Resource id #11 [10] => pat [11] => xxx [12] => SELECT * FROM user WHERE login = 'pat' [13] => Resource id #18 [14] => 1 ) Díky za pomoc... |
||
Jan Tvrdík Profil |
#2 · Zasláno: 18. 2. 2007, 11:30:56
IMHO je to následek právě session_autostart. Z ňákého důvodu nedojde k zavedení session (headers already sent...) a tak při volání se vytvoří nové lokální pole. Zkus zkontrolovat posílání hlaviček, vypnout session autostart a spouštět je manuálně a zkontrolovat, jestli se to povedlo.
|
||
Pat Profil * |
#3 · Zasláno: 19. 2. 2007, 10:08:27
Díky za odezvu. Abych doplnil: session_autostart jsem původně měl vypnuté, session_start jsem pouštěl na začátku každého skriptu, bylo to totéž. Chybové hlášení o již zaslaných hlavičkám nebylo vidět ani v browseru ani v logu apache. Posílání hlaviček ještě prověřím (kdybys náhodou měl nějaký odkaz, kde se dočtu víc, bylo by to super). BTW je to stejné u verze 5.1.4 i 5.2.1. Dokonce - asi je to blbost - jsem v každém skriptu zkoušel volat global $_SESSION, výsledek byl stejný.
Může vadit, že některé skripty jsou jako fce (require_once ...) a některé z webových formulářů? |
||
Časová prodleva: 7 dní
|
|||
Pat Profil * |
#4 · Zasláno: 26. 2. 2007, 15:07:48
Ahoj,
tak dovolte, abych se omluvil všem, kdo tímto problémem "pálili" čas, modří už vědí: $_SESSION je někde psáno s písmenem O, ale povedlo se mi udělat překlep a v některých instancích se místo písmena obsahuje číslo 0. Zdravím |
||
Jan Tvrdík Profil |
#5 · Zasláno: 26. 2. 2007, 16:32:25
Lol, tak to sem vážně něčekal :-P
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0