您的位置:首页 > 其它

kingcms 文章管理 权限修改

2011-08-07 09:33 190 查看
首先说明一下这个权限修改是指让后台具有文章管理权限的普通角色只能管理自己创建的文章,管理员可以管理所有人的文章。本文只是起到一个抛砖引玉的作用。

1.打开/admin/article/index.asp,搜索king_edt函数,找到其中的

sql="arttitle,artcontent,artfrom,artauthor,artup,artshow,artcommend,arthead,artgrade,artkeywords,artdescription,artpath,artimg,listids,artdate"


这一段,在末尾加入

,authorid表示作者的id。
2.再找到同函数中的
'Insert Update

if len(artid)>0 then
conn.execute "update kingart set arttitle='"&safe(data(0,0))&"',artcontent='"&safe(data(1,0))&"',artfrom='"&safe(data(2,0))&"',artauthor='"&safe(data(3,0))&"',artup="&safe(data(4,0))&",artshow="&safe(data(5,0))&",artcommend="&safe(data(6,0))&",arthead="&safe(data(7,0))&",artgrade="&safe(data(8,0))&",artpath='"&safe(data(11,0))&"',artdate='"&safe(data(14,0))&"',artimg='"&safe(data(12,0))&"',listids='"&safe(data(13,0))&"',listid="&listid&",artdescription='"&safe(artdescription)&"',artkeywords='"&safe(artkeywords)&"' where artid="&artid&";"
else
conn.execute "insert into kingart ("&sql&",artorder,listid) values ('"&safe(data(0,0))&"','"&safe(data(1,0))&"','"&safe(data(2,0))&"','"&safe(data(3,0))&"',"&safe(data(4,0))&","&safe(data(5,0))&","&safe(data(6,0))&","&safe(data(7,0))&","&safe(data(8,0))&",'"&safe(artkeywords)&"','"&safe(artdescription)&"','"&safe(data(11,0))&"','"&safe(data(12,0))&"','"&safe(data(13,0))&"','"&safe(data(14,0))&"','"&king.id&"',"&king.neworder("kingart","artorder")&","&listid&")"
artid=king.newid("kingart","artid")

art.createmap
end if


为了不使文章的所有者因修改文章而改变,我们只在创建文章时写入作者id。你只需将上面代码中的else部分覆盖就可以了。不同之处就在最后那个king.id上,它表示当前登录的用户id。

3.为了让用户只能看到自己的文章我们还要修改sub king_art()函数,这个也在index.asp中。找到

sql="select "&sql&" from kingart where listid="&listid&" order by artorder desc,artid desc;"


后将其替换为

if king.level="admin" then
sql="select "&sql&" from kingart where listid="&listid&" order by artorder desc,artid desc;"
else
sql="select "&sql&" from kingart where listid="&listid&" and authorid=" &king.id& " order by artorder desc,artid desc;"
end if


相信不少人看到这里已经明白了,我再多句嘴,这个king.level是当前用户权限。admin是系统管理员的权限名,剩下的就是sql的问题了,大家可以根据自己的需要随便改查询语句就ok了。

自己建几个账号试试,是不是普通账号只能看见自己的文章而管理员能看见所有人的呢?这只是个简单的修改,还是有漏洞的,要想防止被他人修改还可以加入判断当前用户id是否等于文章作者id,否则不能修改。

还是找到king_edt函数,搜索
if len(form("artid"))>0 then'若表单有值的情况下


在其后追加
set rs=conn.execute("select authorid from kingart where artid="&artid&";")
if rs("authorid")<>king.id then king.error king.lang("error/invalid")
rs.close
set rs=nothing


以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐