当前位置:首页 > 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
分享给朋友:

相关文章

Vue如何实现多级域名

Vue如何实现多级域名

Vue 实现多级域名的方法 Vue 本身是一个前端框架,多级域名的实现通常需要结合后端配置和前端路由。以下是几种常见的方法: 使用路由动态匹配 在 Vue Router 中可以通过动态路由参数匹配…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…