Autor Zpráva
clupko
Profil *
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 *
Požij druhej prohlížeč SESSION se přemaže
crook
Profil *
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
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
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 &amp; - 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
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
clupko
Pro FireFox existuje uzitecny doplnek "swap cookies".
clupko
Profil *
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á.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: