| 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: 16 let
|
|||
0