)
if (ss.search(re) >=0)
{
alert("由于权限不足,不能访问此页!")
return false
}
else
{ return true }
}
}
< /script >
< /HEAD >
< BODY onclick="return checkright()" >
< p >这是公共入口页,在点击文档内容区时,
文档的onclick事件将检查点击的是否超链接,
如果是,将进一步检查其id是否在禁止访问的列表(,page1,page2,page3,)
中,如果在列表中,提示访问受限,不许进入;
如果不在列表中?佇斫搿?lt; /p >
< P >< a id=page1 href= Page1.asp >
为了限制page1.asp被访问,此处设定id为page1,
点击此超链接不能进入 < /a >< /P >
< P >< a id=page5 href= Page1.asp >
如果不限制page1.asp环梦剩瓒╥d为page0,
点击此超链接可以进入 < /a >< /P >
< /BODY >
< /HTML >
page.asp的说明:
一、 为了节省篇幅,此文省略了登录网页,
查询访问权限时使用了名为u1的用户名。
二、 用户权限数据库表结构如下:
字段名 字段类型 字段描述
username char(10) 用户名
password char(10) 口令
acl varchar(1800) 禁止访问列表
三、 acl字段中保存禁止访问的ID列表,此例中对应用户u1的acl值为",page1,page2,page3,"。
四、 为了便于管理,可以把ID取作禁止访问的网页的文件名,超链接标记的ID与引用的网页文件名相同即可。此例中为简便起见,两个超链接引用了相同的网页,但分配了不同的ID值,其中page1在禁止访问列表中,因而不可访问,page0不在禁止访问列表中。
此例中是在每次进入公共入口页中查找访问控制列表,这样做的代价是频繁访问数据库。实际上可以在首次访问该页时把取出的acl值保存在会话变量中,在会话结束前再次访问只需访问会话变量即可,不过这样做在用户较多时服务器需要较多的内存来保存这些变量。可以视实际情况决定使用那一种方法。