Autor | Zpráva | ||
---|---|---|---|
clupko Profil * |
#1 · Zasláno: 12. 5. 2009, 01:56:32
dobrý deň,
mohli by ste mi, prosím, poradiť s nasledovným? v php robím menší informačný systém (momentálne offline), kde sa používatelia prihlasujú cez sessions. ak pracuje používateľ sám, je všetko v poriadku. ak ale otvorím novú kartu prehliadača a prihlásim sa ako iný používateľ a následne sa vrátim k pôvodnému, jeho údaje sa zmenia na používateľa #2. neviem, či to popisujem dostatočne, preto uvediem konkrétny príklad: prihlásim sa ako "viera", cez nejaký ten login a heslo. otvorím nové okno a prihlásim sa ako "ondrej". vrátim sa k prvému oknu, kde som prihlásená ako "viera", kliknem na nejakú možnosť menu - a už som tu ako "ondrej". je to len tým, že je systém offline a všetka používateľská aktivita sa odohráva na jednom počítači? vopred ďakujem za odpoveď 8) |
||
Mvilda Profil * |
#2 · Zasláno: 12. 5. 2009, 07:26:27
Požij druhej prohlížeč SESSION se přemaže
|
||
crook Profil * |
#3 · Zasláno: 12. 5. 2009, 08:08:50
No jestli uvazuji zpravne a jestli je to tak asi pouzivas session_id. A session_id se premazava pri kazdem prihlaseni at uz v karte ci stejnem prohlizeci. Jedina sance jak to zkusit je asi jiny prohlizec
|
||
Senky Profil |
#4 · Zasláno: 12. 5. 2009, 09:05:24
Ono takto funguje vacsina stranok na nete, kedze to je aj vyssia bezpecnos aj vselico ine. V tom problem nie je, ak sa niekto prihlasi z ineho pocitaca, tak sa ti to prve session nevymaze, toho sa neboj.
|
||
AM_ Profil |
#5 · Zasláno: 12. 5. 2009, 11:46:12
Ano, skutečně to tak je. Session se drží přes cookie v prohlížeči, takže z hlediska není žádný rozdíl v tom, jestli na dané stránce klikneš na odkaz nebo stránku otevřeš v novém okně - session se vždy zinicializuje přes danou cookie.
Pokud se budeš přihlašovat z různých prohlížečů nebo počítačů, tak vše poběží, jak má. Pokud bys ale mermomocí chtěl uživateli umožnit vícenásobné přihlášení v záložkách jednoho prohlížeče, mohlo by ti pomoct trans_sid (zapíná se v php.ini, nevím teď přesný název) - zajišťuje přenášení sessionid přes URI parametr (ke všem odkazům se přidá PHPSESSID=...) má to ale dva háčky: - trans_sid se aktivuje pouze pokud selže spojení přes cookie - nevím, jestli nějak lze vynutit, aby se použil i u uživatelů, kteří mají cookies zapnuté - jsou tam problémy s generováním validního kódu: - u formulářů to generuje skrytý <input>, který je ovšem podle HTML a ne XHTML, tedy nemá ukončovací lomítko - nevím, jestli je řešitelné - odkazy spojuje pomocí & místo & - lze nastavit v php.ini (pomocí arg_separator.output myslím) - další řešení je napsat si vlastní alternativu k sessions - to je ale docela běh na dlouhou trať a stejně budeš muset nějak upravovat URL - problém s cookie se tím sám nevyřeší. Takže ve výsledku, pokud jsi opravdu toto chtěl, je asi nejlepší se s tímto chováním smířit a více přihlášení z jednoho prohlížeče na 1 pc neumožnit. |
||
imploder Profil |
#6 · Zasláno: 12. 5. 2009, 12:46:16
clupko
Pokud se ti nelíbí takové chování (cookies prohlížeč neomezuje na konkrétní okno nebo tab, ale na určitou URL nebo doménu), nastav předávání sessionů vždy v URL (bez ohledu na to, jestli prohlížeč podporuje cookies nebo ne). PHP na to má direktivu. Zabráníš tím taky zneužití technikou XSRF (cross-site request forgery). |
||
bohyn Profil |
#7 · Zasláno: 12. 5. 2009, 15:07:34
clupko
Pro FireFox existuje uzitecny doplnek "swap cookies". |
||
clupko Profil * |
#8 · Zasláno: 12. 5. 2009, 18:45:24
veľmi pekne ďakujem za odpovede. už je mi to jasné 8) vlastne ani nepotrebujem umožniť prihlasovanie viacerých používateľov z jedného pc naraz, išlo mi len o to, aby táto situácia nenastala aj v reáli - ešte som takýto systém neimplementovala, tak som si nebola istá.
|
||
Časová prodleva: 15 let
|
0