Autor Zpráva
Andy
Profil *
Skratim to..
Zadanie :
- aplikacia ku ktorej moze byt prihlaseny len jeden uzivatel na editaciu.
- ak je bez necinnosti 30min a nezatvoril aplikaciu, automaticky odhlasit, aby mal pristup iny uzivatel.
- ak je nutne, admin moze uzivatela odhlasit nutene.

Vobec netusim ako na to.
Ludi prihlasnujem cez
$_SESSION["id"].
- id je dosadene podla mena a hesla . Ci je prihlaseny cez
if (isset($_SESSION["id"])) return true; else return false;
. Do logov si davam akcie ktore vykonava s presnym casom.
Viem sa odhlasit sam
 unset($_SESSION["id"]);
, ale netusim ako spravit, aby som odhlasil cudzie session_id z aplikacie.

Nejake ukazkove riesenie by pomohlo..
Vdaka.
AM_
Profil
Nebudeš a dokonce ani nejde odhlásit cizí session. Jednoduše k článku do DB ulož timestamp, kdy ho uživatel začal editovat - popř. ideálně by se mohlo AJAXem dávat serveru vědět, že editor je stále otevřený, kdyby sis s tím hodně hrál, měl bys tam i detektor nečinnosti, aby když uživatel okno nezavře, ale jen zahodí do pozadí, ho to také po půlhodině odhlásilo (tedy odesílat požadavky na aktualizaci timestampu každých pět minut pouze v případě, že uživatel řekněme během posledních pěti minut udělal nějakou úpravu). Potom udělat ošetření, že pokud se o editaci pokusí někdo jiný, ověří se timestamp u článku - pokud je starší, než půl hodiny, přebere editaci nový uživatel.
Andy
Profil *
teraz ma napadlo, nedalo by sa to riesit nejako cez LOCK TABLES pre uzivatelov ktory nemaju prava admina? Akurat neviem ako dlho ostane tabulka zamknuta, pripadne ine neduhy..
Joker
Profil
Andy
nedalo by sa to riesit nejako cez LOCK TABLES pre uzivatelov ktory nemaju prava admina?
Nedalo.
Prostě informace o session budou v databázi, včetně času posledního načtení stránky (tj. na každé stránce se zkontroluje, zda v databázi existuje záznam o dané relaci mladší 30 minut -ideálně se může kontrolovat i IP a podobně, jako ochrana před session stealing- a pokud existuje, aktualizuje se čas v záznamu)
To zajistí automatické odhlášení. Admin by pak mohl nějakou akcí smazat/zneplatnit záznam o session v databázi.
Přes nějaký příznak v záznamu se pak dá řešit i aby mohl být přihlášený jen jeden uživatel na editaci, byť jsem přesně nepochopil, co je smyslem toho.

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:

0