許可權問題比如:linux角色許可權 可讀 可寫 可執行 ,許可權二進位制分別是100 010 001,十進位制就是4 2 1,資料庫許可權欄位若為state 預設為0,通常許可權都是多選框形式,如下圖:
>可執行
label
>
3div
>
4<
br>
5<
div
class
="row"
style
=" margin-left:24px;"
>
6<
input
type
="checkbox"
id="player_state2"
value
="1"
name
="states"
class
="permission_item"
/>
<
label
for="player_state2"
>可寫
label
>
7div
>
8<
br>
9<
div
class
="row"
style
=" margin-left:24px;"
>
10<
input
type
="checkbox"
id="player_state3"
value
="2"
name
="states"
class
="permission_item"
/>
<
label
for="player_state3"
>可讀
label
>
11div
>
view code
接下來我們提交取到的值就是$query['state'],是乙個陣列,array([0] => 1 [1] => 2 ),接下來就應該修改許可權值,首先要獲取乙個值,這個值就要用到位運算<<
, 每次左移都乘以2
if (!empty($query['states']))本來$currstate 輸出值為2 6, 6便是這個最終的狀態值}
而如果想要獲取當前的狀態,如
//這的&$charstate 為獲取到的資料庫值
$state1 = $charstate & 0x1;
$state2 = $charstate & 0x2;
$state3 = $charstate & 0x4;
得到的$state1 $state2 $state3 分別為三種狀態值,有更好方法歡迎補充.
PHP位運算許可權設計
首先將許可權按照2的次方來定義值,依次類推 define add 1 增加許可權 define upd 2 修改許可權 define sel 4 查詢許可權 define del 8 刪除許可權 a access add upd sel del a擁有增刪改查許可權 b access add upd...
php位運算許可權管理
簡單許可權類 class peak auth 本類不允許物件複製的操作 public function clone 設定許可權的詳細資訊 param string authmessage public function setauthmessage authmessage 獲取權名稱 return ...
php位運算的許可權設計
位運算的運算物件是二進位制位,速度快,效率高,而且節省空間,位運算做許可權控制也相當的靈活。但是位運算有很大的侷限,位移不能超過32次,這就要求許可權的數量不超過32中。將許可權按照2的n次方來定義值,一次類推。為什麼要這個樣子定義,這個樣紙的定義是為了保證每個許可權值 二進位制 中只有乙個1,而它...