如何检查给定网址是否在某个域内? PHP

时间:2012-01-19 06:45:15

标签: php regex string api

我如何检查给定网址是否在某个预定域内,例如用户注册api请求:

http://domain.com

然后他提出了一个请求:

http://domain.com/script.ext?var=foo //this should validate true

http://example.com/script.ext?var=foo //this should validate false

http://www.domain.com/script.ext?var=foo //this should validate true also

提前致谢

3 个答案:

答案 0 :(得分:13)

使用parse_url()

if ( 'domain.com' == parse_url( $url, PHP_URL_HOST ) )
{
    // do something awesome
}

答案 1 :(得分:1)

我不确定我是否正确理解您的问题,但如果您想查看请求源自何处,可以使用http引用中的“http referer”字段。 (http://en.wikipedia.org/wiki/HTTP_referer)

我不是很擅长php,但我认为你可以使用像$ _SERVER ['HTTP_REFERER']这样的东西来获取价值。该值是自动设置的,因此您只需要阅读它。

让我们通过点击“www.domain.com/referer.php”页面上的链接来调用“www.domain.com/page.php”页面,然后该请求将包含referer字段“http: //www.domain.com/referer.php“当您在”www.domain.com/page.php“中阅读$ _SERVER ['HTTP_REFERER']时。

如果您通过直接在浏览器中输入“www.domain.com/page.php”来申请“www.domain.com/page.php”,则会获得referer = null,如果您点击www.anotherdomain.com上指向“www.domain”的链接.com / page.php“你会得到referer = http://www.anotherdomain.com

然后,您只需要将此值的域部分与您允许的域/域进行比较。

答案 2 :(得分:0)

也许您可以查看parse_url功能。