Diskuze: Oprávnění
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, zkus použít bitmask. Jedná se o takový zkrácený datový typ. Úložiš si do db číslo a podle bitových operací pak zjistujes, na co má uživatel právo. Pomocí operátoru &
např
const FLAG_1 = 0b0001; // 1
const FLAG_2 = 0b0010; // 2
const FLAG_3 = 0b0100; // 4
const FLAG_4 = 0b1000; // 8
function show_flags ($flags) {
if ($flags & FLAG_1) {
echo "You passed flag 1!<br>\n";
}
if ($flags & FLAG_2) {
echo "You passed flag 2!<br>\n";
}
if ($flags & FLAG_3) {
echo "You passed flag 3!<br>\n";
}
if ($flags & FLAG_4) {
echo "You passed flag 4!<br>\n";
}
}
show_flags(FLAG_1 | FLAG_3);
Takže, když tam hodíš číslo třeba 7, tak ti vylezou flagy 1-3,
protože 1+2+4 = 7
Můžeš si všimnout, že to jde postupně. 2 na pořadí, v jakém to je.
Počítáno od nuly.
Popřípadě ty konstanty můžeš vyjádřit ještě jinak. Např takto
const FLAG_1 = 1; // 1
const FLAG_2 = 10; // 2
const FLAG_3 = 100; // 4
const FLAG_4 = 1000; // 8
// atd ...
Pokud znáš u linuxu příkaz chmod, využívá to stejný systém (myslím)
Jo, to znám, ale nikdy jsem to nikde sám nepoužil. Nebude to nepraktické na programování? Když tam budu mít nějaké třeba 40ti bitové číslo, tak za chvíli zapomenu, který bit je jaké oprávnění a které jsou ještě volné... Jinak to je asi celkem dobré.
Asi by to chtělo trochu seskupit, zkus se inspirovat.
To je pěkné, ale tam vůbec neřeší nějaké ukládání do databáze...
Do databáze ukládáš už jenom roli. Kolik konfigurací budeš mít, pět, šest? Jednotlivým rolím pak přísluší jeké operace s jakými zdroji mohou provádět.
Zobrazeno 8 zpráv z 8.