まず第一に、許可に 2 進数と 2 の累乗を使用する人がいる理由がわかりません。後方関係から1/0でtrue/falseを表しているからでしょうか?
例: 1010 means false, true, false, true
?
私の質問は次のとおりです。10 進数は215
進数と同じですが、次のようになります。1111
DEFINE ('READ',1);
DEFINE ('WRITE',2);
DEFINE ('EDIT',4);
DEFINE ('DELETE',8);
$current = 15;
if ($current & READ) print("can read <br />");
if ($current & WRITE) print("can write <br />");
if ($current & EDIT) print("can edit <br />");
if ($current & DELETE) print("can delete <br />");
これは、予想どおり、すべての権限が許可されていることを出力します。ただし、15 を変更すると1111
、4 つすべてではなく 3 つだけが許可されていることが表示されます (delete
許可は無効になります)。
DEFINE ('READ',1);
DEFINE ('WRITE',2);
DEFINE ('EDIT',4);
DEFINE ('DELETE',8);
$current = 1111;
if ($current & READ) print("can read <br />");
if ($current & WRITE) print("can write <br />");
if ($current & EDIT) print("can edit <br />");
if ($current & DELETE) print("can delete <br />");
おかしくないですか?私はそれを間違って理解していますか?これを理解するには助けが必要です。アクセス許可を 10 進数または 2 進数として db に格納する必要がありますか?