php - 用于关键任务的 php HTTP_HOST 和 HTTP_REFERER 的可靠性

标签 php environment-variables http-referer http-host

我打算用 PHP 开发一个网站。但不确定我要使用的方法是否是最好的方法。同一站点将有许多附加域。但内容将根据用于访问该网站的域进行过滤。

例如,如果用户来自域 siteusa.com,则内容将根据特定用户过滤显示。如果用户来自 siteuk.com/sitechina.com,内容将被相应地过滤等...

我打算做这样的事情来检测 url 并提供内容

 $ref = getenv("HTTP_REFERER");
    echo $ref; 

或通过

$host = $_SERVER['HTTP_HOST'];
echo $host ;

这是最好的方法吗?我可能会遇到任何瓶颈吗?这应该不会将域检测为关键域。

站点的主域将提供未过滤的内容,每个附加域将根据后端为每个域设置的过滤器对其进行过滤。

有一个类似的问题,但关于 codeigniter here .

最佳答案

HTTP_REFERER 是一个糟糕的选择。当用户直接访问您的网站时,HTTP_REFERER 将为空。

HTTP_HOST/SERVER_NAME 应该可以解决问题,但它可能会因负载平衡软件或代理而失败。

因此,这取决于您的服务器配置。如果您有权访问主机配置(例如 apache 虚拟主机),您可以简单地在每个域的每个 VirtualHost 中指定 ENV 变量。

关于php - 用于关键任务的 php HTTP_HOST 和 HTTP_REFERER 的可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899717/

相关文章:

php - 上传的图片未在 Google Cloud Storage 上设置为公开 - Google App Engine

node.js - 在 Node 配置之前使用 dotenv 加载 ENV 变量

c++ - 在 Visual Studio 2005 中调试时显示环境变量?

javascript - 如何刷新页面并保留 Referer header

使用新的 iPadOS/iOS 13 进行 PHP 移动设备检测

javascript - PHP 中的 URL 编码正斜杠

php mb_detect_encoding()

php - 如何访问名称无效的属性?

javascript - 是否可以将动态变量传递给 process.env 来获取 env 变量?例如 process.env ['variable name' ]

django - 在 Django 测试中设置 HTTP_REFERER header