Php 使用正则表达式基于url对用户进行身份验证
我正在构建一个PHP用户登录和管理系统。每个用户都有一个由管理员指定的角色 假设角色A有一个值Php 使用正则表达式基于url对用户进行身份验证,php,regex,url,authentication,expression,Php,Regex,Url,Authentication,Expression,我正在构建一个PHP用户登录和管理系统。每个用户都有一个由管理员指定的角色 假设角色A有一个值url=/users/*。 这意味着具有角色a的用户应该访问目录/users中的每个网页。 例如,用户应该访问mydomain.com/users/myprofile.php,mydomain.com/users/friends/index.php,但不能访问mydomain.com/foo/index.php 我认为一个好的解决方案是用正则表达式实现这一点 我的规则是url=/users/*。我用正则
url=/users/*
。
这意味着具有角色a的用户应该访问目录/users
中的每个网页。
例如,用户应该访问mydomain.com/users/myprofile.php
,mydomain.com/users/friends/index.php
,但不能访问mydomain.com/foo/index.php
我认为一个好的解决方案是用正则表达式实现这一点
我的规则是url=/users/*
。我用正则表达式替换*
符号,删除规则开头的url=
,然后获取用户访问的页面的url,并执行预匹配(规则,url),如果返回是,则用户已通过身份验证,否则我重定向他
问题:
1。应该用什么正则表达式替换*
符号?我在想[a-zA-Z0-9\-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2.使用$\u SERVER['REQUEST\u URI']
获取用户访问的当前URL是否安全。用于此目的是否安全
3.还有其他方法可以实现吗?你可以从不同的角度来看待这一点。通常,每个页面都会有一个检查用户凭据的方法-您要做的是确认他拥有的权限允许他访问该页面。因此,例如,users/目录中的每个页面都将调用一个函数来检查用户的cookie并确认他在用户组中
您不需要检查$\u服务器['REQUEST\u URI']
,因为页面知道它在哪里(如果不知道,请使用\uu DIR\uu
等)
如果您需要更复杂的功能,您可以设置用户功能并检查所有页面添加,例如
if ($visitor->hascapability(X) {
showlink(); //etc. etc.
}
问题是,管理员应该指定用户必须遵循的规则。例如,管理员将创建一个规则url=/users/*然后脚本必须检查请求该网页的用户是否应该具有访问权限。它必须是动态的,能够快速更改而不必更改代码。当然,根据管理员提供的规则,每个页面中都会有签入用户应有访问权限的方法。。谢谢