🗣 Wd提问: php 域名
🤖 Ai回答: 在 PHP 中,“域名”通常指的是网站的网址(如 `65.hk`),它可以在多个场景中使用,比如:
获取当前访问的域名
验证域名合法性
重定向到特定域名
处理 URL 路由或子域名逻辑
✅ 1、获取当前访问的域名
php
<?php
// 获取完整的域名(包括协议和端口)
$domain = $_SERVER['HTTP_HOST'];
// 或者更完整的方式(包含协议)
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
$domain = $protocol 、'://' 、$_SERVER['HTTP_HOST'];
echo $domain; // 例如: https://65.hk
?
⚠️ `$_SERVER['HTTP_HOST']` 是最常用的方法,但要小心被伪造(用户可修改请求头)。
✅ 2、检查域名是否合法(正则验证)
php
<?php
function isValidDomain($domain) {
return preg_match('/^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?\.)+[a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?$/i', $domain);
}
// 测试
echo isValidDomain('65.hk') ? '有效' : '无效'; // 有效
echo isValidDomain('invalid..domain') ? '有效' : '无效'; // 无效
?
✅ 这个正则支持常见的顶级域名(如 `.com`, `.org`, `.net` 等),并允许子域名。
✅ 3、获取域名的子域名部分
php
<?php
$host = $_SERVER['HTTP_HOST'];
// 去掉端口(如果有)
$host = preg_replace('/:\d+$/', '', $host);
// 分割域名
$parts = explode('.', $host);
// 假设是三级域名:sub.65.hk
if (count($parts) = 3) {
$subdomain = $parts[0];
$main_domain = $parts[1] 、'.' 、$parts[2];
} else {
$subdomain = '';
$main_domain = $host;
}
echo 子域名: $subdomain\n;
echo 主域名: $main_domain\n;
?
✅ 4、重定向到指定域名
php
<?php
$targetDomain = 'https://newsite.com';
header(Location: $targetDomain);
exit();
?
⚠️ 重定向前不要输出任何内容(否则会报错)。
✅ 5、判断是否来自特定域名(防跨站/安全验证)
php
<?php
$allowedDomains = ['65.hk', 'www.65.hk'];
$referer = $_SERVER['HTTP_REFERER'] ?? '';
// 提取来源域名
$refererHost = parse_url($referer, PHP_URL_HOST);
if (!in_array($refererHost, $allowedDomains)) {
die('禁止访问');
}
?
✅ 6、使用 `parse_url()` 解析完整域名信息
php
<?php
$url = 'https://sub.65.hk:8080/path/page.php?query=1';
$parsed = parse_url($url);
echo 协议: 、$parsed['scheme'] 、\n; // https
echo 主机: 、$parsed['host'] 、\n; // sub.65.hk
echo 端口: 、($parsed['port'] ?? '默认') 、\n; // 8080
echo 路径: 、$parsed['path'] 、\n; // /path/page.php
?
📌 小贴士
| 场景 | 推荐方法 |
| 获取当前域名 | `$_SERVER['HTTP_HOST']` |
| 安全获取域名 | 结合 `parse_url()` + `filter_var()` |
| 子域名处理 | `explode('.', $host)` |
| 防止伪造 | 不信任客户端传入的 `Host`,用 `$_SERVER` 变量 |
🔒 安全建议
不要直接信任 `$_SERVER['HTTP_HOST']`,特别是用于权限控制。
使用 `parse_url()` + `filter_var()` 做验证:
php
if (!filter_var($domain, FILTER_VALIDATE_DOMAIN)) {
die('非法域名');
}
💡 注意:`FILTER_VALIDATE_DOMAIN` 是从 PHP 7.4+ 开始支持的。
如果你有具体的用途(如:多租户系统、子域名分发、域名白名单等),可以告诉我,我可以提供更针对性的代码示例!
📣 商家广告:





0
IP地址: 187.8.246.188
搜索次数: 0
提问时间: 2025-10-25 19:17:11
🛒 域名购买:
z-o.net
lf.gs
q-j.cn
ftp.ink
y-b.net
f.cq.cn
6-6.com.cn
31.gs
b.qh.cn
yq.gs
❓️ 热门提问:
esc 云服务器
免费cdn加速工具
ip 产品
加拿大VPS云主机评测
csgo完美服务器
成都云服务器
cpu服务器推荐
nacos nginx
香港的什么山最出名
服务器租用那里好
豌豆Ai站群搜索引擎系统
🌐 域名评估:
jj.he.cn
j-f.com.cn
xyxk.cn
n.hk.cn
su.ha.cn
hh.sn.cn
xg.gs
nzpy.cn
kimi.black
trump.ah.cn
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
搜索引擎公关
Programa de motor de búsqueda
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。