3

次のように、バイナリ システムを使用してアクセス許可を処理する予定です。

<?php
const POST = 1;
const DELETE = 2;
const UPDATE = 4;
const READ = 8;
const ADMIN = 16;
const ADD_PRODUCT = 32;
const DELETE_PRODUCT = 64;
const ADD_BLOG = 128;


$permission = decbin('5');

if ($permission & POST) { echo "POST <br />"; }
if ($permission & DELETE) { echo "DELETE <br />"; }
if ($permission & UPDATE) { echo "UPDATE <br />"; }
if ($permission & READ) { echo "READ <br />"; }
if ($permission & ADMIN) { echo "ADMIN <br />"; }

?>

いくつかの権限があれば、これはうまく機能します。しかし、たとえば、40 の異なる権限がある場合はどうなるでしょうか。次に、いくつかの非常に大きな数を合計する必要がありますが、これはお尻の痛みです。

他に方法はありますか?

情報やヘルプは非常に高く評価されます!

4

1 に答える 1

0

1) 16 進数を使用して定数を定義します。入力がはるかに簡単です。

2) 個別の権限を異なるユーザー ロールに分割します。

例えば

const BLOG_POST      = 0x01;
const BLOG_DELETE    = 0x02;
const BLOG_UPDATE    = 0x04;
const BLOG_READ      = 0x08;
const BLOG_SUBSCRIBE = 0x10;

const ADMIN_IS_ADMIN       = 0x01;
const ADMIN_ADD_PRODUCT    = 0x02;
const ADMIN_DELETE_PRODUCT = 0x04;
const ADMIN_ADD_BLOG       = 0x08;

数字が大きくなっても入力しやすい

const ADMIN_SOME_PERMISSION   = 0x1000;
const ADMIN_SOME_PERMISSION2  = 0x2000;
于 2012-07-24T14:32:21.510 に答える