Autor Zpráva
aaaBB
Profil *
Dobry den,

potrebujem seriozne poradit ohladne prav pre uzivatelov.
Priznam sa, ze som precital par clankov, ale stale neviem najst to idealne
riesenie.

Potrebujem X tipov opravneni, dajme tomu ze 10 opravneni a moja myslienka je, ze
pri uzivatlovi bude bunka PRAVA tipu varchar 10 kde bude napr:

NNAANNNNNA a defaulte bude NNNNNNNNNN

Teraz pomocou strpos zistim

$_SESSION['1pravo'] = 'N';
$_SESSION['2pravo'] = 'N';
$_SESSION['3pravo'] = 'A';
.
.
.
$_SESSION['10pravo'] = 'A';

Je to takto dobre? Nevadi, ze bude tolko vela $_SESSION? Ako to zjednodusit?
a mohol by som to napisat cez pole? teda:

$_SESSION['pravo']['diskusie'] = 'N';
$_SESSION['pravo']['clanky'] = 'N'; zrejme chapete.




Verim, ze mi tu niekto invsetuje chvilku casu, pretoze mi na to dost zalezi.


Dakujem vopred moc krat.
tiso
Profil
Vadí, stačí Ti jedna session:
$_SESSION['prava']='NNAANNNNNA'

a budeš sa odkazovať na jednotlivé znaky z nej...
aaaBB
Profil *
Wow, verim ti :o) a este mi povec potom pre jednotlive sekcie to mam pisat takto:

if ( substr($_SESSION['prava'], 2, 3) == A)
{
vykonaj..
}
else
{
neopravneny pristup.
}

Moze byt? Alebo da este lepsie?

Dakujem moc krat.
Alphard
Profil
např. echo $_SESSION['prava']{3};
aaaBB
Profil *
A este mi povedzte ako to vy mate vyriesenie s pravami? Podobne ako ja alebo inak?

Diky za odpoved.
Mastodont
Profil
IMHO jsou lepší čísla a bitový AND:

http://cz.php.net/manual/en/language.operators.bitwise.php
http://www.litfuel.net/tutorials/bitwise.htm
tiso
Profil
Mastodont - to sú, nechcel som to prehnať :-)
aaaBB
Profil *
Hm, precital som si to ale vobec tomu nechapem, vedel by si mi objasnit opre ten nas pripad?
Mastodont
Profil
aaaBB
Máš to na té druhé stránce. Práva jsou uložena jako jedno číslo, vytvořené součtem jednotlivých práv:

$read = 1;

$write = 2;
$readwrite = 16;
$local_admin = 32;
$global_admin = 64;


Lokální admin s právem editace příspěvků pak bude mít práva 48. Zápis

$pravo & 32

vrátí true, protože v číslu 48 je 32 obsaženo. Čísla pro práva musí být samozřejmě volena tak, aby ze součtu šlo vždy jednoznačně jednotlivá práva určit, obvykle se bere číselná řada 1, 2, 4, 8, 16 atd.

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