PHP利用二进制实现权限控制,遇到一个瓶颈,求解决方案。 本帖最后由 subendong 于 2011-12-18 22:01:13 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考linux下的文件(目录)权限设置777 = 1+2+4 1+2+4 1+2+4用位运算不是很快很好吗啊? 那我用这种方法行不行啊?有没有什么弊端?比如当前用户拥有RankID为1和3的权限,我将其放入$_SESSION里面,$_SESSION["rank"] = ",1,3,";下面是我用PHP写的一个函数,用来判断当前用户是否拥有当前的权限<?php session_start(); $_SESSION["rank"] = ",1,3,"; check_rank(1); /** 判断权限 $rank_id,当前权限的ID */ function check_rank($rank_id) { if ( !isset($_SESSION["rank"]) ) { echo "error"; } else { if ( strpos($_SESSION["rank"], "," . $rank_id . ",") > -1 ) { echo "yeah"; } else { echo "shit"; } } }?> 哦,我只是假设。比如一个门户网站可能会随着它的发展,加入越来越多的功能。所以会这么认为。而且我是把每一个action当做一个权限。 action 可以无限的多,但用户群就那么几种:管理群、特权群、一般群再怎么细分,也是有限的 #新手来袭# 关于mysqli和mysql函数插入数据出现乱码 php与flash通信谁能给讲解一下! IIS PHP 虚拟目录 Windows下的PHP和Linux下的PHP有区别吗? PHP实现交通银行支付接口 php 正看例子学习,帮我看一下错在何处? 如何的大得到数组的第一项的key和value PHP如何读取form 中select 传递过来的参数 用 PHP 来调用 JavaScript 脚本的函数和变量可以吗? ie8 360不显示select元素 Chrom显示为什么呢 关于错误提示的问题
777 = 1+2+4 1+2+4 1+2+4
用位运算不是很快很好吗啊?
session_start();
$_SESSION["rank"] = ",1,3,";
check_rank(1);
/**
判断权限
$rank_id,当前权限的ID
*/
function check_rank($rank_id)
{
if ( !isset($_SESSION["rank"]) )
{
echo "error";
}
else
{
if ( strpos($_SESSION["rank"], "," . $rank_id . ",") > -1 )
{
echo "yeah";
}
else
{
echo "shit";
}
}
}
?>
而且我是把每一个action当做一个权限。
再怎么细分,也是有限的