Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式基于url对用户进行身份验证_Php_Regex_Url_Authentication_Expression - Fatal编程技术网

Php 使用正则表达式基于url对用户进行身份验证

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/*。我用正则

我正在构建一个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=
,然后获取用户访问的页面的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/*然后脚本必须检查请求该网页的用户是否应该具有访问权限。它必须是动态的,能够快速更改而不必更改代码。当然,根据管理员提供的规则,每个页面中都会有签入用户应有访问权限的方法。。谢谢