加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 检查输入的URL是否来自某个域

发布时间:2020-05-26 16:01:52 所属栏目:PHP 来源:互联网
导读:我有一个用户可以输入URL的字段.我需要检查该网址是否来自某个域,在本例中为google.com. 我试过这个,但它不适用于所有情况(我在下面列出): if(strstr(parse_url($link, PHP_URL_HOST), google.com) { // continue } http://www.google.com/blah – 工作 http

我有一个用户可以输入URL的字段.我需要检查该网址是否来自某个域,在本例中为google.com.

我试过这个,但它不适用于所有情况(我在下面列出):

if(strstr(parse_url($link,PHP_URL_HOST),'google.com') { // continue }

> http://www.google.com/blah – 工作
> https://www.google.com/blah – 作品
> google.com/blah – 不起作用
> www.google.com/blah – 无效

没有正则表达式有没有办法做到这一点?如果没有,怎么办呢?

谢谢.

parse_url需要有效的网址且google.com/blah无效(截至 PHP 5.3.3) – 因此无法使用.作为解决方法,您可以附加http(如果尚不存在),然后检查域.

使用以下功能:

function checkRootDomain($url) 
{
    if (!preg_match("~^(?:f|ht)tps?://~i",$url)) {
        $url = "http://" . $url;
    }

    $domain = implode('.',array_slice(explode('.',parse_url($url,PHP_URL_HOST)),-2));
    if ($domain == 'google.com') {
        return True;
    } else {
        return False;
    }

}

测试用例:

var_dump(checkRootDomain('http://www.google.com/blah'));
var_dump(checkRootDomain('https://www.google.com/blah '));
var_dump(checkRootDomain('google.com/blah'));
var_dump(checkRootDomain('www.google.com/blah '));

结果:

bool(true) 
bool(true) 
bool(true) 
bool(true)

这是我自己的答案here的修改版本.

希望这可以帮助!

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读