Undefined index: C – prosím o pomoc

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MW
Člen | 626
+
0
-

Zdravím,

uz par mesicu delam na projektu, ale nahle jsem zacal dostavat tuto chybu

Nette 2.0.5 zadna změna nebyla.. ani v konfiguraci..
Vymazu prohlizec, je to ok.. ale po restartu znovu… :/

EDIT:
Podezrivam to, ze mam ted rozdelane tri aplikace, které testuji na localhostu, postavene na NETTE a koliduji me session.. je to mozne?
Zalezi, kterou pustim drive..¨

Díky za jakoukoliv radu..

Editoval MW (24. 3. 2014 13:16)

Milo
Nette Core | 1283
+
0
-

Byl to bug v Session.php

MW
Člen | 626
+
0
-

Me prekvapilo, ze se to objevilo po roce vývoje a testovani..
Muze to byt tedy kolize s ostatními aplikacemi, které vyvíjím pod nette?

Nejsou tam nejake navaznosti? Muzu upravit jen tyto radky?

Diky !

Editoval MW (24. 3. 2014 14:23)

Milo
Nette Core | 1283
+
0
-

Jestli tu session sdílí více verzí Nette, tak to je tím. Ten counter můžeš klidně odstranit.

MW
Člen | 626
+
0
-

Super moc diky!

Ale neda me to spat.. prosim.. muzu poprosit o vysvetleni, jak se ta session muze sdilet? Resp. k cemu tam doslo.. Klic by mel byt prece identicky ne?

Diky

Šaman
Člen | 2666
+
0
-

Session je pro celou doménu a jestli máš jen podadresáře na localhostu (nevytváříš doménové aliasy), tak máš session společné. Schválně, jestli máš ve více aplikacích stejné přihlášení třeba na admina ze sandboxu, tak se v jedné aplikaci přihlaš a pak pusť druhou – identita přihlášeného zůstala nastavená.

Můžeš si třeba při přihlášení nastavit do dat identity nějaký specifický řetězec a pak v debugBaru uvidíš, která aplikace tuto identitu vytvořila. Jestli stavíš na stejném Sandboxu, tak se pravděpodobně používá i v jiných aplikacích na stejné doméně.

<?php
# UserManager.php, řádek 56
$arr = $row->toArray();
$arr['appName'] = "Název aplikace"; # <--- přidej tohle a uvidíš, která aplikaze identitu vytvořila
unset($arr[self::COLUMN_PASSWORD_HASH]);
return new Nette\Security\Identity($row[self::COLUMN_ID], $row[self::COLUMN_ROLE], $arr);
?>

P.S. Co se týče toho unikátního sessionId – to se ukládá v cookies a cookies jsou společné pro doménu. Právě z toho důvodu aplikace sdílí stejné session.

Editoval Šaman (24. 3. 2014 16:30)

MW
Člen | 626
+
0
-

Moc díky za vysvětlení !
Takze to je evidentne kolize sessions…

Mely by to tedy vyresit aliasy?

Šaman
Člen | 2666
+
0
-

Snad jo, já jsem to líný nastavovat.
Já mám hodně aplikací jen ve složkách, bez aliasů, a nemám s tím problém (jen jsem si jednou všiml, že jsem přihlášený na čerstvě naklonované aplikaci aniž bych se přihlašoval). Ale asi to chce mít na všech aktualizované Nette.

MW
Člen | 626
+
0
-

Což o to, já bych aktualizoval na poslední Nette.. ale bojím se dlouhodobé nefunkčnosti systému, než to všechno opravím… udělal jsem to jednou a pak přepisoval hafo věcí :/

Ale asi se tomu nevyhnu.. ale z verze 2.0.5 na současnou to asi nebude bez problemu…

V každem případě díky !!!

Milo
Nette Core | 1283
+
0
-

Pokud je sdílení session pro doménu nežádoucí, nastav aplikacím jméno session anebo nastav cestu session cookiesce. Koukni na API metod Session::setCookieParameters() a Session::setName().

Jestli Ti session startují cizí knihovny před Nette, můžeš to hardcode nastavit přes session_name() a session_set_cookie_params().

MW
Člen | 626
+
0
-

Super.. moc dekuju !