php中基于角色的权限控制; 对于checkbox的话,那么用数组序列化将会是很好的解决方案。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.pconline.com.cn/pcedu/empolder/wz/php/10203/37991.htmlthis webpage can solve your problem 你的表设计的不是很好 UsrLogin Name vChar 50 登录名UsrPwd vChar 50 密码Grade int 级别权限表:1 Gradeid tintny 等级 gradename vchar 202 canview tinyint(3) UNSIGNED 访问权限...................................以下字段省略如果可以查看把字段为1 默认为0不能查看,然后程序中用empty判断尽量封装,能省去你很多事情简单的给你写点代码,你自己看吧function usergroup($userid) { $query1="select * from user_group left join user_info on group=groupid where userid=$userid"; $result1=$db->ExeCute($query1) or die("数据库错误"); if($result1->RecordCount()==1) { $this->group['caniview']=&$result1->fields['canview']; ........................................................... grade和grade_id都可以用tinyint(3) UNSIGNED 类型 做一个表用来放权限吧。id userID gradeID moudel表id 用户ID 权限级别 模块或各种删除,编辑,添加,认证用需要有删除。编辑。添加。认证操作时。根据用户ID级别操作相应的功能 字段Power1 Power2 Power3 Power4..都是表示用户的访问权限了。我如果授予用户x的权限为power1,那么他就有power1对应的权限,如:访问所有页面。而授予power2的权限有可能只能访问部分页面了,这样就可以限制用户对受保护页面的访问。 呵,看看我的访问控制系统吧http://blog.csdn.net/misnet/ 为了介绍方便,我只建一张表,把用户信息和权限全放入这张表例如:建一张名为user的表,有username, pw, brow, addu, modi, dele,admi等字段,其中admi字段是1的话,就是管理员,默认为0。每个用户都有浏览,添加,修改,删除四种权限,1表示有权限,0表示没有权限,默认为0。首先建立一个login页面,作用为判断用户权限,以后每个页面都首先调用login页面//login.phpif (isset($_POST['login'])){ mysql_connect('localhost', 'root', '1234567') or die('Connect error!'.mysql_error()); mysql_select_db('test') or die ('Select error!'.mysql_error()); $query = "select * from user where username='$_POST[username]'"; $result = mysql_query($query); $num = mysql_num_rows($result); $row = mysql_fetch_array($result); if ($num==0) exit("用户名不存在"); if ($row['pw']==md5($_POST['password'])) { $_SESSION['user']['name'] = $_POST['username']; $_SESSION['user']['administrator'] = $row['admi']; $_SESSION['user']['browser'] = $row['brow']; $_SESSION['user']['add'] = $row['addu']; $_SESSION['user']['modify'] = $row['modi']; $_SESSION['user']['delete'] = $row['dele']; echo "<meta http-equiv=refresh content='0; url=main.php'>"; } else exit("密码错误");}}这是添加用户页面,//add.php<?php session_start();if(!isset($_SESSION['user']['name'])) header("Location: login.php");?>//如果没有登陆就回到login登陆,否则继续<?phpif($_SESSION['user']['administrator']!=1)exit("不是管理员,没有权限"); //不是管理员的话就停止else{?><FORM action="add.php" method="post">用户权限:<input type="checkbox" name="browser" /><label for="browser">浏览 </label><input type="checkbox" name="add" /><label for="add">增加 </label><input type="checkbox" name="modify" /><label for="modify">修改 </label><input type="checkbox" name="delete" /><label for="delete">删除 </label><input type="submit" name="register" value="添加"></FORM><?php//提交后,开始用PHP处理if(isset($_POST['register'])){$browser = $_POST['browser']=="on"?1:0;//1表示允许,0表示不允许$add = $_POST['add']=="on"?1:0;$modify = $_POST['modify']=="on"?1:0;$delete = $_POST['delete']=="on"?1:0;mysql_connect('localhost', 'root', '1234567');mysql_select_db('test');$sql = "insert into user (brow, addu, modi, dele) values ('$browser', '$add', '$modify', '$delete')";if(mysql_query($sql) or die(mysql_error()))echo "成功";else echo "失败";}} 上面是管理员分配普通用户的权限,现在再说权限的控制,权限控制其实更简单,因为已经把用户的权限信息放入Session,所以只需要判断Session中存放的值就可以了,例如:if($_SESSION['user']['browser']==1){//如果拥有浏览权限..........}if($_SESSION['user']['add']==1){//如果拥有添加权限..........}以下依次类推 starflash2003(大柠檬) 的想法我是 懂了,可是就是关键的地方被省略了,本人太笨了~~~if($_SESSION['user']['browser']==1){//如果拥有浏览权限..........}....你的“//如果拥有浏览权限..........”这部分内容可能就是一些授权语句了,我现在就是在想,如果我只是授权用户访问一个页面那应该怎么来实现呢?也就是怎么样让check的值和一个页面进行关联了。怎么样读取一个用户的信息中的存储的check的值就知道他拥有访问该页面的权限呢? 我是用3张表实现的:system_user存放用户system_menu存放每个页面的路径system_access存放用户ID和menu_id,进入一个页面时判断在system_access中是否有user_id和该页面的menu_id,这样可以检查某用户是否对该页面有访问权。但后来发现如果同一个页面中又分浏览、删除、修改等几种权限时,该方法就不行了。 to 楼主,在login.php中,已经把用户的所有信息都从数据库中调出存在Session中了,然后在其他页面只需要判断Sesson中的信息就行了,例如:<?php<?php session_start();if(!isset($_SESSION['user']['name'])) header("Location: login.php");else{if($_SESSION['user']['browser']==1){ echo "你有权限";}else{ echo "你没有权限";}}?>再解释一下,授权语句是在上面的add.php中,把授权信息存入数据库内,其他页面再从数据库中取出授权信息,根据授权信息把不同的内容显示给不同权限用户 个人的思考:将checkbox的参数传递给管理页面。管理页通过读取的参数来决定locate哪个访问页 asp 中一般都是用session,分配权限后,刷一遍session 如何读取指定时间内的数据? 数据库 相同数据合并输出表格 网站连接问题 oracle用法,头疼啊头疼 从数据库读取数据的问题 调查,做php的朋友薪金,请说明地点,工作年限。 PHP冒泡排序问题 正则表达式。高手入!!! 下拉列表select 能不能象vb那样既可以选择一个值,又可以手工输入,因为列表中的值是不够的 在<select>标签允许多选的时候,PHP怎么接收<select>中的多个选择? 在php中如何获得来访者的url?比如从www.aaa.com指向到www.bbb.com的网址信息? 急,关于汇总统计的SQL语句写法
UsrLogin Name vChar 50 登录名
UsrPwd vChar 50 密码
Grade int 级别
权限表:
1 Gradeid tintny 等级 gradename vchar 202 canview tinyint(3) UNSIGNED 访问权限...................................以下字段省略
如果可以查看把字段为1 默认为0不能查看,然后程序中用empty判断
尽量封装,能省去你很多事情
简单的给你写点代码,你自己看吧function usergroup($userid)
{
$query1="select * from user_group left join user_info on group=groupid where userid=$userid";
$result1=$db->ExeCute($query1) or die("数据库错误");
if($result1->RecordCount()==1)
{
$this->group['caniview']=&$result1->fields['canview'];
...........................................................
id userID gradeID moudel
表id 用户ID 权限级别 模块或各种删除,编辑,添加,认证
用需要有删除。编辑。添加。认证操作时。
根据用户ID级别操作相应的功能
都是表示用户的访问权限了。我如果授予用户x的权限为power1,那么他就有power1对应的权限,如:访问所有页面。而授予power2的权限有可能只能访问部分页面了,这样就可以限制用户对受保护页面的访问。
http://blog.csdn.net/misnet/
例如:建一张名为user的表,有username, pw, brow, addu, modi, dele,admi等字段,其中admi字段是1的话,就是管理员,默认为0。每个用户都有浏览,添加,修改,删除四种权限,1表示有权限,0表示没有权限,默认为0。首先建立一个login页面,作用为判断用户权限,以后每个页面都首先调用login页面
//login.php
if (isset($_POST['login']))
{
mysql_connect('localhost', 'root', '1234567') or die('Connect error!'.mysql_error());
mysql_select_db('test') or die ('Select error!'.mysql_error());
$query = "select * from user where username='$_POST[username]'";
$result = mysql_query($query);
$num = mysql_num_rows($result);
$row = mysql_fetch_array($result);
if ($num==0) exit("用户名不存在");
if ($row['pw']==md5($_POST['password']))
{
$_SESSION['user']['name'] = $_POST['username'];
$_SESSION['user']['administrator'] = $row['admi'];
$_SESSION['user']['browser'] = $row['brow'];
$_SESSION['user']['add'] = $row['addu'];
$_SESSION['user']['modify'] = $row['modi'];
$_SESSION['user']['delete'] = $row['dele'];
echo "<meta http-equiv=refresh content='0; url=main.php'>";
}
else exit("密码错误");
}
}这是添加用户页面,
//add.php
<?php
session_start();
if(!isset($_SESSION['user']['name']))
header("Location: login.php");
?>
//如果没有登陆就回到login登陆,否则继续
<?php
if($_SESSION['user']['administrator']!=1)
exit("不是管理员,没有权限"); //不是管理员的话就停止
else
{
?>
<FORM action="add.php" method="post">
用户权限:
<input type="checkbox" name="browser" /><label for="browser">浏览 </label>
<input type="checkbox" name="add" /><label for="add">增加 </label>
<input type="checkbox" name="modify" /><label for="modify">修改 </label>
<input type="checkbox" name="delete" /><label for="delete">删除 </label>
<input type="submit" name="register" value="添加">
</FORM><?php
//提交后,开始用PHP处理
if(isset($_POST['register']))
{
$browser = $_POST['browser']=="on"?1:0;//1表示允许,0表示不允许
$add = $_POST['add']=="on"?1:0;
$modify = $_POST['modify']=="on"?1:0;
$delete = $_POST['delete']=="on"?1:0;
mysql_connect('localhost', 'root', '1234567');
mysql_select_db('test');
$sql = "insert into user (brow, addu, modi, dele) values ('$browser', '$add', '$modify', '$delete')";
if(mysql_query($sql) or die(mysql_error()))
echo "成功";
else echo "失败";
}
}
if($_SESSION['user']['browser']==1)
{
//如果拥有浏览权限..........
}
if($_SESSION['user']['add']==1)
{
//如果拥有添加权限..........
}
以下依次类推
if($_SESSION['user']['browser']==1)
{
//如果拥有浏览权限..........
}
.
.
.
.
你的“//如果拥有浏览权限..........”这部分内容可能就是一些授权语句了,我现在就是在想,如果我只是授权用户访问一个页面那应该怎么来实现呢?也就是怎么样让check的值和一个页面进行关联了。怎么样读取一个用户的信息中的存储的check的值就知道他拥有访问该页面的权限呢?
system_user存放用户
system_menu存放每个页面的路径
system_access存放用户ID和menu_id,进入一个页面时判断在system_access中是否有user_id和该页面的menu_id,这样可以检查某用户是否对该页面有访问权。但后来发现如果同一个页面中又分浏览、删除、修改等几种权限时,该方法就不行了。
<?php
<?php
session_start();
if(!isset($_SESSION['user']['name']))
header("Location: login.php");
else
{
if($_SESSION['user']['browser']==1)
{
echo "你有权限";
}
else
{
echo "你没有权限";
}
}
?>
再解释一下,授权语句是在上面的add.php中,把授权信息存入数据库内,其他页面再从数据库中取出授权信息,根据授权信息把不同的内容显示给不同权限用户