·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> Php会员权限

Php会员权限

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php会员权限

<?phpecho $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> <?phpMySQL_connect("localhost","root","");mysql_select_db("db99");mysql_query("set names'UTF8'");define('ADD', 1);define('UPD', 2);define('LIS', 4);define('DEL', 8);?> <?phpinclude_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次方才行。<?phpdefine('ADD', 1); //1 转化二进制define('UPD', 2); //10define('LIS', 4); //100define('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