只获取指定的url

Posted

技术标签:

【中文标题】只获取指定的url【英文标题】:Get only a specified url 【发布时间】:2017-03-03 23:40:07 【问题描述】:

我只想检查完成的站点:*.test.com*.test1.com 我试过了:

if((preg_match('.\w+.test.com', $_SERVER['HTTP_ORIGIN'])) or (preg_match('.\w+.test1.com', $_SERVER['HTTP_ORIGIN'])))

【问题讨论】:

试试 $urlcheck = expload("test.com",$_SERVER['HTTP_ORIGIN']); if(isset($urlcheck[1])) // 这意味着它有 test.com 所以你的代码放在这里。试试 test.com 和 *.test1.com php 的正则表达式需要分隔符,php.net/manual/en/regexp.reference.delimiters.php。那些正则表达式应该一直在抛出错误。 【参考方案1】:

对于初学者,您需要最可靠的方法来分解任何给定的网址。为此,您可以使用 PHP 的 built-in parse_url function:

$host = parse_url($url, PHP_URL_HOST);

然后,您要检查它是否以test.comtest1.com 结尾,您可以使用正则表达式:

if (preg_match('/test1?\.com$/', $host)) 
    //match

正则表达式的工作方式如下:

test:匹配字符串文字 "test" 1?:匹配文字1,但它是可选的,所以testtest1 都会匹配 \.:文字点匹配 com: com 的文字匹配 $:字符串结束。只有当test.comtest1.com 中的字符串结束 时,表达式才会匹配。

只是一个警告:$_SERVER['HTTP_ORIGIN'],事实上几乎没有一个$_SERVER 值是值得信任的。您可以在此处阅读有关该主题的更多信息(+ 链接页面)

How secure is HTTP_ORIGIN?

【讨论】:

【参考方案2】:

你可以使用 str_pos。 str_pos 将在字符串、链接、url 中搜索。 文档link

这是一个小例子

if(strpos($_SERVER['HTTP_ORIGIN'], 'test.com') !== false) 
    echo "found it";

【讨论】:

您没有检查test1.com。您试图编辑我的答案:请再次阅读问题:OP 想要检查 "test.com" and “test1.com”。除了test1 没有被检查。如果我拥有像 "com.org" 之类的域,并且有一个 "test" 子域,那么您的支票将不会接受 HTTP_ORIGINtest.com.org跨度>

以上是关于只获取指定的url的主要内容,如果未能解决你的问题,请参考以下文章

js获取url上的指定参数

laravel 获取 当前url 的方法, 有的是获取 全部url 有的只获取 主页其他 部分 阿星小栈

向指定url发送请求与获取响应

js获取当前域名Url相对路径和参数以及指定参数

Javascript 获取指定的 URL 参数值

js获取url中的指定参数