只获取指定的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.com
或test1.com
结尾,您可以使用正则表达式:
if (preg_match('/test1?\.com$/', $host))
//match
正则表达式的工作方式如下:
test
:匹配字符串文字 "test"
1?
:匹配文字1
,但它是可选的,所以test
和test1
都会匹配
\.
:文字点匹配
com
: com 的文字匹配
$
:字符串结束。只有当test.com
或test1.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_ORIGIN
是 test.com.org
跨度>
以上是关于只获取指定的url的主要内容,如果未能解决你的问题,请参考以下文章