检查 URL 是否来自某个网​​站 [英] Check if URL is from a certain website

查看:27
本文介绍了检查 URL 是否来自某个网​​站的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用户可以提交一个表单,在该表单中他可以提交到 sitea.com 的链接.现在我想要做的是检查用户是否真的提交了来自 sitea.com

The user can submit a form where he can submit a link to sitea.com. Now what I want to do is check if the user actually submitted an URL coming from sitea.com

我尝试检查 URL 是否正确(使用正则表达式),并且包含 sitea.com.但这包含差距,因为任何人都可以将 ?haha=sitea.com 添加到 URL 并且仍然有匹配项.因为我不是正则表达式的高手,所以我的解决方案"到此结束.

I've tried to check if the URL is correct (using regex), and contains sitea.com. But that contains gaps, as anyone can add ?haha=sitea.com to an URL and still have a match. And 'cause I'm no master in regex, my "solution" ends here.

是否可以检查 $_POST['url'] 是否实际上是指向 sitea.com 的链接?

Is it possible to check if $_POST['url'] is actually a link to sitea.com?

推荐答案

我认为最好 parse_url()在这里.正则表达式可能有效,但最好在内置函数可用时避免使用正则表达式.

I think it's best parse_url() here. Regex may work, but it's best to avoid using regex when a built-in function is available.

我会这样做:

$url = '...';
$domain = implode('.', array_slice(explode('.', parse_url($url, PHP_URL_HOST)), -2));

if ($domain == 'sitea.com') {
    # code...
}

作为函数:

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

}

测试用例:

var_dump(getDomain('http://sitea.com/'));
var_dump(getDomain('http://sitea.com/directory'));
var_dump(getDomain('http://subdomain.sitea.com/'));
var_dump(getDomain('http://sub.subdomain.sitea.com/#test'));

var_dump(getDomain('http://subdomain.notsitea.com/#dsdf'));
var_dump(getDomain('http://sitea.somesite.com'));
var_dump(getDomain('http://example.com/sitea.com'));
var_dump(getDomain('http://sitea.example.com/test.php?haha=sitea.com'));

输出:

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

bool(false)
bool(false)
bool(false)
bool(false)

这篇关于检查 URL 是否来自某个网​​站的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆