佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 1518|回复: 17

php权限设计的问题....要怎样disable 一个link? 高手们帮帮忙

[复制链接]
发表于 4-8-2009 09:51 PM | 显示全部楼层 |阅读模式
当user login后,我要怎样control 呢?
比方说user1可以add update delete
user2 可以view罢了
user3可以add
大概是这样!! 帮帮忙!!

[ 本帖最后由 Ivan_Teng 于 23-8-2009 08:15 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 5-8-2009 02:39 AM | 显示全部楼层
权限这方面可以设计到很复杂,但也可以很简单,只不过这要依据你的系统有些什么条件,要知道有那些需求,和那些可以reusable(可以是数据表,可以是程式,也可以是其它的方法等等)。
如果设定有些复杂的话,建议先画出UML来确认你的方向,然后根据需求预设用户权限。

讲解上可能会比较难明白,我尽量尝试说简单些。
我以新闻系统来举个例子,用简单方法设置权限教学。

1。 我们想想看这系统会联系到些什么?
首先是用户登入,然后依据用户的权限,然后使用新闻系统。
然而从这里我们需要不同用户依据不同权限来管理新闻作为条件。
从迹象来看,我们需要知道它们有哪些什么关系。

2。从以上观点来看,我们需要用户资料,用户权限设定,还有新闻系统。
接下来我们可以利用这三方面资料设定权限关系链,知道这些关系后,接下来我们定位数据表。

3。现在我们开始设计资料库。
用户表 tbl_user
  1. user_id(pk) | username
  2. -------------------
  3. 1       | ah_beng
  4. 2       | ah_hwa
复制代码
用户表 tbl_news
  1. news_id(pk) | news_title | news_content
  2. ---------------------------------------
  3. 1       | news_ttl_1  | content here
  4. 2       | news_ttl_2  | content here
复制代码
权限表 tbl_permission
  1. permit_id(pk)| permit_code
  2. ----------------------------
  3. 1          | create
  4. 2          | read
  5. 3          | update
  6. 4          | delete
复制代码
4. 接下来,我们还需要一个条件式权限关系表,这个表就是用来设定用户的新闻管理权限了。
权限关系表 tbl_permit_relation
  1. user_id(pk)|news_id(pk)| permit_id(pk)
  2. --------------------------------------
  3. 1          | 0         | 1            
  4. 1          | 1         | 2         
  5. 1          | 1         | 3           
  6. 1          | 2         | 2         
  7. 2          | 1         | 2           
  8. 2          | 2         | 2           
复制代码
以逻辑判断,已经存在的新闻是不可能再创建作为定义了,所以0作为创建news_id的开头。
使用设定权限创建(create)时,权限关系表不可以出现 news_id > 0,所以设定权限需要作逻辑filter。
以上‘表’意思说
1。用户ah_beng(ID:1)可以创建(ID:1)新的新闻文件(ID:0)。
2。用户ah_beng(ID:1)可以读取(ID:2)和修改(ID:3)新闻 news_ttl_1(ID:1).
3。用户ah_beng(ID:1)只可以新闻(ID:2) 新闻 news_ttl_2(ID:2).
4。用户 ah_hwa(ID:2)只可以读取(ID:2)新闻news_ttl_1(ID:1)或 新闻 news_ttl_2(ID:2).

*注:这未必适合全部的权限设定使用,这只是针对个案来教学。
因为权限可分为群组、个人、模组、功能以及特权的设计,以上教学不适合使用。

[ 本帖最后由 jinn 于 5-8-2009 02:44 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 5-8-2009 08:43 PM | 显示全部楼层
我没做过权限设定,非常陌生,也不会所以希望大家帮帮忙!
我要做的是大概会分两个群组,一个是customer一个management
customer如果没变的话每个customer应该是一样!
management的每个会不一样!
大概是这样!
回复

使用道具 举报

发表于 6-8-2009 02:43 PM | 显示全部楼层
你這個問題太大了,這個不是那么容易教的,因為很多不一樣的情況,
盡量用session,if else判斷吧,要不然就去下載wordpress,lifetype的source來參考,
我當初也是這樣自己摸回來的,因為這東西很難教,因為還有安全性的問題。
如果你做到有問題時再問,你可以看其他帖子問的都是小問題,最多回答者給一段程式就可以解決,
你的可沒那么容易。

[ 本帖最后由 y小叶y 于 6-8-2009 02:48 PM 编辑 ]
回复

使用道具 举报

发表于 6-8-2009 03:18 PM | 显示全部楼层
较简单的方法
你可以create一个user group(user, vip, admin...)table
然后再一个table叫accessControl还是什么的
里面store每一个user group所可以access的page, function什么的
当你load page时就拿当下user的user group id 去accessControl table query out什么东西可以看什么page可以进咯
有点类似之前所讲的那样……
回复

使用道具 举报

发表于 6-8-2009 03:38 PM | 显示全部楼层

回复 5# _cy_ 的帖子

沒錯 。 當USER login 時 , 就用SESSION STORE 著 ACCESS RIGHT 。
盡量用 IF - ELSE 來控制 你的PAGE / BUTTON 要不要SHOW 出來 。
回复

使用道具 举报

Follow Us
发表于 6-8-2009 04:39 PM | 显示全部楼层
你可以参考以下教学:

http://calos-tw.blogspot.com/2009/06/php.html
回复

使用道具 举报

 楼主| 发表于 6-8-2009 10:05 PM | 显示全部楼层
原帖由 _cy_ 于 6-8-2009 03:18 PM 发表
较简单的方法
你可以create一个user group(user, vip, admin...)table
然后再一个table叫accessControl还是什么的
里面store每一个user group所可以access的page, function什么的
当你load page时就拿当下user的 ...


可以detail点吗?我还在看着jinn给的link!
我对这很陌生!
回复

使用道具 举报


ADVERTISEMENT

发表于 7-8-2009 10:44 AM | 显示全部楼层

回复 8# Ivan_Teng 的帖子

其实简单来讲就是db store全部user的access right
而php会去query某个user的right然后根据它来display该有的东西
example: php get update, view post this two right from db so while generate the page, php will check the right. if view update post is in the access right list den it will display out. else ignore
回复

使用道具 举报

 楼主| 发表于 7-8-2009 09:57 PM | 显示全部楼层
大家还知道什么好的教学吗??
回复

使用道具 举报

 楼主| 发表于 9-8-2009 08:38 PM | 显示全部楼层
还有人会吗??
回复

使用道具 举报

 楼主| 发表于 19-8-2009 09:20 PM | 显示全部楼层
我已经开始做了!
要怎样才能把link disabled 呢,当这个user不能进一个pages!!
回复

使用道具 举报

发表于 23-8-2009 02:08 PM | 显示全部楼层
原帖由 Ivan_Teng 于 19-8-2009 09:20 PM 发表
我已经开始做了!
要怎样才能把link disabled 呢,当这个user不能进一个pages!!


IF ELSE session control

<? php if session =admin
show link
?>
<?php else
hide the link
?>

the linkage page also set session
If session !=admin then redirect to another page.

[ 本帖最后由 kcman 于 23-8-2009 02:17 PM 编辑 ]
回复

使用道具 举报

发表于 23-8-2009 08:05 PM | 显示全部楼层
原帖由 kcman 于 23-8-2009 02:08 PM 发表


IF ELSE session control




the linkage page also set session
If session !=admin then redirect to another page.


你用他的方法做看!!

[ 本帖最后由 心影 于 23-8-2009 08:09 PM 编辑 ]
回复

使用道具 举报

发表于 23-8-2009 08:07 PM | 显示全部楼层
原帖由 kcman 于 23-8-2009 02:08 PM 发表


IF ELSE session control




the linkage page also set session
If session !=admin then redirect to another page.


我也想知道hide 要怎样做??

[ 本帖最后由 心影 于 23-8-2009 08:10 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 23-8-2009 08:13 PM | 显示全部楼层
我已经把资料放进表里了,我储存的方法是1:2:3:4
1是加2是修改3是删除4是看和打印
如果那个人只能加时表会收1::::如果能加和删除就会收1::3:
回复

使用道具 举报


ADVERTISEMENT

发表于 25-8-2009 12:14 PM | 显示全部楼层
原帖由 心影 于 23-8-2009 08:07 PM 发表


我也想知道hide 要怎样做??


<? php if session=admin

print hyperlink

else

print nothing
?>

look at google search, surf youtube+dreamweaver8 to learn how to setup register page and login function.

[ 本帖最后由 kcman 于 25-8-2009 12:16 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 25-8-2009 10:46 PM | 显示全部楼层
我已经做到了,谢谢大家的帮忙!
不过要一个一个link去set很多下....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 5-5-2026 11:47 AM , Processed in 0.085421 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表