gpt4 book ai didi

php - 检测请求是否来自不同域或子域的最佳方法

转载 作者:行者123 更新时间:2023-12-02 22:08:55 25 4
gpt4 key购买 nike

我正在构建一个应用程序,该应用程序使用位于数据库中的用户子域和自定义域名,因此如果请求来自另一个域,我将从数据库中检查该自定义 url 是否确实存在或何时请求来自子域,我会检查它是否存在。如果是,我会做我的事情。

将此视为我正在寻找的一个简单示例:

if(is_user_request())
{
$url = get_url();
// assuming that get_url() magically decides whether to output ..
// a custom domain (http://domain.tld)
// or a subdomain's first part (eg. "this".domain.tld)
}
else
{
// otherwise it's not a sub domain nor a custom domain,
// so we're dealing with our own main site.
}

现在,在您继续假设之前,因为我有 0 个代表,所以我在这里要求“teh 代码”。我有一个完全可行的方法来执行此操作,如下所示:

// hosts
$hosts = explode('.', $_SERVER['HTTP_HOST']);

// if there is a subdomain and that's under our $sitename
if(!empty($hosts[1]) AND $hosts[1] === Config::get('domain_mid_name'))
{
$url = $hosts[0];
$url_custom = false;
}

// if there is no subdomain, but the domain is our $sitename
elseif(!empty($hosts[0]) AND $hosts[0] === Config::get('domain_mid_name') AND !empty($hosts[1]) AND $hosts[1] !== Config::get('domain_mid_name'))
{
$url = false;
$url_custom = false;
}

// otherwise it's most likely that the request
// came from a entirely different domain name.
// which means it's probably $custom_site
else
{
$url = false;
$url_custom = implode('.', $hosts);
}

if($url)
{
return $url;
}

if($url_custom)
{
return $url_custom;
}

不过,我确信有更好的方法可以做到这一点。因为首先,HTTP_HOST 不包含“http://”,所以我需要手动添加它,我很确定这整个 if, else 只是一个矫枉过正的问题。所以,请比我聪明的人赐教。

哦,不......我没有预定义的子域。我有一个简单的通配符 *.domain.tld 设置,因此所有子域都转到主脚本。我之所以这么说,是因为在我搜索解决方案的过程中,我发现了很多建议手动创建子域的答案,这与我要问的问题甚至没有任何关系,所以让我们跳过这个主题。

最佳答案

$_SERVER['HTTP_HOST'] 是正确的方法,除非您想将不同的参数从您的 Web 服务器传递到 PHP。

关于协议(protocol),请注意请求协议(protocol)应由 $_SERVER['HTTPS'] 确定,而不是假设它是 http

要提取子域,您可以使用 array_shift 查看然后运行

$subdomain = array_shift(explode('.', $_SERVER['HTTP_HOST']));

但通常你所拥有的是它应该如何完成。

关于php - 检测请求是否来自不同域或子域的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com