📜  如果浏览器 url 中包含域名,请使用 php 进行检查(1)

📅  最后修改于: 2023-12-03 15:09:19.791000             🧑  作者: Mango

如果浏览器 url 中包含域名,请使用 PHP 进行检查

在进行网站开发时,有时候需要检查浏览器访问的 URL 是否包含某个特定的域名。例如,某个网站需要限制只能通过该网站的域名来访问,而不能通过其他域名访问。这时就需要使用 PHP 语言来进行检查。

使用 $_SERVER 变量获取当前 URL

在 PHP 中,可以使用 $_SERVER 变量来获取当前正在访问的网页的信息。其中,$_SERVER['HTTP_HOST'] 变量可以用来获取当前 URL 中的域名部分。

为了获取完整的 URL,可以使用以下代码:

$fullUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

这里使用了三个 $_SERVER 变量:

  • $_SERVER['HTTPS']:表示当前访问的 URL 是否使用了 HTTPS 协议,是则为 on,否则为 off
  • $_SERVER['HTTP_HOST']:表示当前访问的 URL 中的域名部分。
  • $_SERVER['REQUEST_URI']:表示当前访问的 URL 中的路径部分。

然后使用条件运算符 ? : 来判断是否使用了 HTTPS 协议,构造完整的 URL。最终得到的 $fullUrl 变量即为当前访问的完整 URL。

检查当前 URL 是否包含指定域名

要检查浏览器访问的 URL 是否包含指定的域名,可以使用 strpos() 函数。该函数可以从一个字符串中查找指定的子串,并返回该子串在字符串中第一次出现的位置。如果没找到,返回 false

例如,要检查当前 URL 是否包含 example.com 域名,可以使用以下代码:

if(strpos($fullUrl, 'example.com') !== false) {
    echo 'URL contains example.com';
} else {
    echo 'URL does not contain example.com';
}

该代码通过 strpos() 函数来查找 example.com 子串在 $fullUrl 变量中的位置。如果返回的位置不为 false,则表明该子串在字符串中出现过,即当前 URL 中包含 example.com 域名。

总结

在 PHP 中,可以使用 $_SERVER 变量来获取当前访问的 URL 信息。通过 strpos() 函数来查找 URL 中是否包含指定的域名。这样就可以在网站开发中实现对 URL 域名的限制和检查。