当前位置:首页 > PHP

php实现域名授权

2026-03-13 04:47:10PHP

PHP 实现域名授权的方法

获取当前访问域名

使用 $_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME'] 获取当前访问的域名。建议优先使用 HTTP_HOST,因为它能正确反映客户端请求的域名。

$current_domain = $_SERVER['HTTP_HOST'];

定义授权域名列表

将允许访问的域名存储在数组中,便于后续验证。

$allowed_domains = [
    'example.com',
    'sub.example.com',
    'another-domain.com'
];

域名验证逻辑

检查当前域名是否在授权列表中。可以使用 in_array 进行简单验证。

if (!in_array($current_domain, $allowed_domains)) {
    header('HTTP/1.1 403 Forbidden');
    exit('Access denied: Unauthorized domain');
}

支持通配符子域名

如果需要支持类似 *.example.com 的通配符匹配,可以使用正则表达式。

$is_allowed = false;
foreach ($allowed_domains as $pattern) {
    if (fnmatch($pattern, $current_domain)) {
        $is_allowed = true;
        break;
    }
}

增强安全性

考虑将授权域名存储在数据库或配置文件中,避免硬编码。同时可以添加 IP 验证等其他安全层。

$config = parse_ini_file('config.ini', true);
$allowed_domains = $config['security']['allowed_domains'];

完整示例代码

以下是一个结合上述方法的完整实现示例:

php实现域名授权

<?php
// 获取当前域名
$current_domain = $_SERVER['HTTP_HOST'];

// 授权域名列表(可从数据库或配置文件加载)
$allowed_domains = [
    'example.com',
    '*.example.com',
    'trusted-site.net'
];

// 验证逻辑
$access_granted = false;
foreach ($allowed_domains as $pattern) {
    if (fnmatch($pattern, $current_domain)) {
        $access_granted = true;
        break;
    }
}

// 处理未授权访问
if (!$access_granted) {
    http_response_code(403);
    die("Unauthorized domain access: $current_domain");
}

// 授权通过后的正常业务逻辑
echo "Welcome from $current_domain";
?>

注意事项

  • 确保服务器正确配置,防止 HTTP_HOST 被伪造
  • 在生产环境中,建议结合 SSL/TLS 使用
  • 定期审核授权域名列表
  • 考虑实现域名授权的缓存机制以提高性能

标签: 域名php
分享给朋友:

相关文章

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php实现投票

php实现投票

PHP实现投票功能 数据库设计 创建数据库表存储投票数据,例如: CREATE TABLE `votes` ( `id` int(11) NOT NULL AUTO_INCREMENT,…

php实现登录功能

php实现登录功能

创建登录表单 在HTML中创建一个表单,包含用户名和密码输入框。表单的action属性指向处理登录的PHP文件,method设置为POST。 <form action="login.php"…

php 实现的n

php 实现的n

以下是关于 PHP 实现 N 的常见需求及解决方案的整理: 生成 N 个随机数 使用 rand() 或 mt_rand() 函数结合循环生成指定数量的随机数: $n = 10; // 生成10…

react如何设置假的域名

react如何设置假的域名

设置本地开发环境假域名 在React开发中,可以通过修改本地hosts文件或配置开发服务器来实现假域名访问。以下是几种常见方法: 修改本地hosts文件 编辑系统hosts文件(路径:Windows…

php树形菜单的实现

php树形菜单的实现

PHP树形菜单的实现方法 实现树形菜单通常涉及数据库设计、数据查询和前端展示三个部分。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的树形结构存储方式,每个节点…