sql >> Databáze >  >> RDS >> Mysql

Manipulace s bity a načítání MySQL v PHP

Uvažovali jste o uložení vašich oprávnění jako celého čísla, přičemž každé oprávnění má binární hodnotu (tj. 1,2,4,8,16) a sečtete všechna jejich oprávnění. Poté můžete zkontrolovat, zda mají dané oprávnění pomocí operátoru &

Asi takhle:

if ($accessLevel & $userPermissions) 

To vám dává mnohem použitelnější systém než ukládání binárního čísla

Jak bylo požadováno v komentářích, trochu více informací.

Nastavili byste svou tabulku uživatelů tak, aby měla celočíselné pole pro uložení vašich oprávnění. Každá z vašich úrovní oprávnění by měla binární násobek (zde neznám správný výraz), který odpovídá hodnotě binárního bitu. Například:

Read - 1
Edit - 2
Create - 4
Delete - 8

A tak dále, kolik je potřeba. Chcete-li vytvořit úroveň oprávnění uživatele, NEBO hodnoty společně. Předpokládejme, že výše uvedené úrovně jsou uloženy ve třídě jako statické hodnoty, vytvořili byste ji takto:

$newUser->Permissions = Permissions::Read | Permissions::Create;

Což vám dává uživatele, který může číst a vytvářet, ale ne upravovat nebo mazat.

Chcete-li zkontrolovat, zda má uživatel oprávnění k provedení akce, použijte AND:

if ($newUser->Permissions & Permissions::Read) {
    echo 'You can do this!';
}  else {
    echo 'You can't this!';
}

Získáte tak jedno jednoduché pole databáze, které je tak rozšiřitelné, jak budete reálně potřebovat, a snadno použitelné kontroly a změny. Můžete také zvážit uložení úrovní oprávnění do jiné tabulky atd., podle toho, jakou úroveň přizpůsobení budete potřebovat.



  1. Jak předefinovat sloupce vrácené uloženou procedurou na serveru SQL Server

  2. Vyberte dostupné pokoje mezi dvěma termíny

  3. Importujte excel (.csv) do MySQL pomocí PHP kódu a HTML formuláře

  4. MySQL – řádky do sloupců