Autor | Zpráva | ||
---|---|---|---|
tatyalien Profil |
#1 · Zasláno: 15. 3. 2010, 16:23:37
Dobrý den, mám ještě dotázek ohledně odhlášení uživatele adminem na tvrdo (pro případ, že bych udělal nějakou hlavní změnu v db, skriptech atd a potřeboval bych, aby se uživatel odhlásil a přihlásil.
Jde mě o to, že při přihlášení si hodím u uživatele do session data, které pak dále využívám pro běch stránek, například: function fun_prihlaseni($prezdivka, $heslo) { /** Tato funkce si vytáhne z DB uživatelů sloupeček ID, USER, ADMIN ID je unikátní číslo uživatele prezdivka - přezdívka USER hodnoty: 0 - čerstvě založený uživatel, nemá žádná práva, jen se mu zobrazí formulář se žádostí o přidělení práv 1 - přidělené práva na vytváření reklamací a čtení ADMIN hodnoty: 0 - normální uživatel (bez admin práv) 1 - admin 1 úrovně 2 - admin 2 úrovně Tytot hodnoty ukládám do sessionu id, user_uroven, admin_uroven a email_odeslan Tyto sessiony budu používat v průběhu stránek. */ $vysledek=mysql_query("SELECT id, prezdivka, user, admin, pobocka_uzivatele FROM ".$GLOBALS["TB_uzivatele"]." WHERE prezdivka='".saveDB($prezdivka)."' and heslo='".saveDB(md5(trim($heslo)))."'", $GLOBALS["link"]); if (mysql_num_rows($vysledek)==0) return false; else { $radek = mysql_fetch_array($vysledek); if ($radek["id"]<>0) { $_SESSION["id"] = $radek["id"]; $_SESSION["user_prezdivka"] = $radek["prezdivka"]; $_SESSION["user_uroven"] = $radek["user"]; $_SESSION["admin_uroven"] = $radek["admin"]; $_SESSION["email_odeslan"] = "ne"; if ($radek["pobocka_uzivatele"] != '') { // pokud uživatel má zvolenou pobočku, nastavím mu jí pro skript $_SESSION["user_pobocka"] = $radek["pobocka_uzivatele"]; } else { // jinak nastavuji defaultní hodnotu, která je nastavena pro celou reklamaci $_SESSION["user_pobocka"] = $GLOBALS["nase_spolecnost"]; } } } } pokud bych třeba následně změnil pobočku uživatele, tak v DB mu jí změním, ale uživatel má stále hozenou pobočku v Sessionu, jde to nějak udělat, nebo to budu muset překopat dle návrhů co mě dohodíte :-) |
||
fritol33 Profil |
#2 · Zasláno: 15. 3. 2010, 16:31:59 · Upravil/a: fritol33
tatyalien:
Každopádně bych (například) do indexu sepsal nějaký znovu-přihlašovací script, kde použiješ např. session_destroy nebo jen jednoduše přepíšeš již použité proměnné edit: Vycházím z toho, že index je přítomný v celé aplikaci - pokud ne, musel by jsi na něj odkázat na všech stránkách |
||
Lamicz Profil |
#3 · Zasláno: 15. 3. 2010, 17:25:51
Pri kazdym refreshi stranky (kliknuti na neco) v adminu se provede SQL dotaz, ktery zkontroluje u lognutyho usera nejaky parametr, treba "je_validni" s default 1. Ty budes mit v adminu akci, ktera nastavi tento parametr na 0 podle jeho id a tim SQL dotaz u dotycnyho neprojde a automaticky ho odhlasis.
|
||
tatyalien Profil |
#4 · Zasláno: 16. 3. 2010, 09:46:56
vsechny session jsou prez index reseny, takze pak jsou pro všechny "podstránky" k dispozici. Takže pokud si udělám kontrolu před spuštěním jakéhokoliv skriptu (zásahu do db atd) zda má nastaveno v db že se má uživatel na tvrdo odhlásit, tak dát session_destroy? Tím by se mu pak nezobrazilo nic a musel by se prihlásit... nebyl jsem si jistej, zda to session destroy na tohle projde.
|
||
fritol33 Profil |
#5 · Zasláno: 16. 3. 2010, 09:52:09
Já bych to nejlépe vyřešil tak, že by každá editace v administraci měla své identifikační číslo (třeba pomocí time()) a při každém přihlášení by se do sessionu uživatele uložila verze... Když bys pak udělal novou verzi, změníš číslo a přihlášeného uživatele testuješ, zda má shodnou. Jestli nikoliv načteš znovu data do session... Např.
if($_SESSION["version"] != $row->version) { ... kód ... } |
||
tatyalien Profil |
#6 · Zasláno: 16. 3. 2010, 10:35:18
fritol33:
Asi to udělám dle tvého návrhu, u změn přez administraci (u důležitých změn co se generují při přihlášení) si uložím datum s časem změny a budu to tak kontrolovat. Možná bude pohodlnější mu na pozadí načíst "nové" udaje a nenutit uživatele se znova přihlásit. |
||
Časová prodleva: 14 let
|
0