程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Php會員權限

Php會員權限

編輯:關於PHP編程

<?php
echo $uu=@array_sum(@$_POST['gr']);
?>
<form action="" method="POST">
ADD<input type="checkbox" name="gr[]" value=1 <?php echo $uu&1?"checked":null;?>>
UPD<input type="checkbox" name="gr[]" value=2 <?php echo $uu&2?"checked":null;?>>
LIS<input type="checkbox" name="gr[]" value=4 <?php echo $uu&4?"checked":null;?>>
DEL<input type="checkbox" name="gr[]" value=8 <?php echo $uu&8?"checked":null;?>>
<input type="submit" value="提交" />
</form>


<?php
mysql_connect("localhost","root","");
mysql_select_db("db99");
mysql_query("set names'UTF8'");
define('ADD', 1);
define('UPD', 2);
define('LIS', 4);
define('DEL', 8);
?>


<?php
include_once('config.php');
$sql="select * from `user_admin` as a,`user_group`
as b where a.`gro`=b.`sid` and a.`uname`=''";
$query=mysql_query($sql);
$rs=mysql_fetch_row($query);
if($rs[6]&ADD){
echo "有權限";
}else{
echo "無權限";
}
?>

這裡主要使用了二進制的方法 這是一種思路,所以定義常量的時候 必須是2的N次方才行。
<?php
define('ADD', 1); //1 轉化二進制
define('UPD', 2); //10
define('LIS', 4); //100
define('DEL', 8); //1000

$sy = ADD | UPD | LIS | DEL;
echo "所有權限" . decbin($sy);
$ny = $sy ^ (UPD | DEL);
echo "沒有刪除和更新權限" . decbin($ny);

在PHP中要判斷一個數在某些數范圍內就可以使用 & 運算符。
& 是位運算,不是 && 邏輯運算 (位運算符:& | ^ ~)
例如:7=4|2|1  ===》 $sy = 4|2|1
這裡的或是指的可以能包含的內容值,在位運算裡其實可以簡單理解成 7=4+2+1,
用 & 來操作,可以知道7&4、7&2、7&1都是真的,而如果7&8則是假的。
我們還可以用^ 來從包含的值內去除:如 $ny = $sy ^ 2
這樣一來,$ny 只有 4|1 如果做判斷也就只有 $ny&4、$ny&1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved