0

几年来,我一直使用通常推荐的方法来检查页面是本地调用还是远程调用,方法是检查是否$_SERVER['SERVER_ADDR']等于 127.0.0.1 或为空。这已在其他问题中讨论过,例如thisthis。其他超全局变量$_SERVER['REMOTE_ADDR']也经常被提及。

随着时间的推移,我发现这种方法有时似乎会失败。

我真正想知道的是脚本是在我的开发服务器(xampp、wamp、IDE 调试器...)还是在生产服务器上调用的。这样可以正确设置 Web 根目录之上的脚本路径。虽然这在 99.999% 的情况下都有效,但似乎有时,当 Apache 重定向到 404 页面时,$_SERVER['SERVER_ADDR']肯定会丢失,并且在生产服务器上运行的脚本通过了“本地”测试。

因此,我正在寻找其他方法。当然,我在 Apache 中可能做错了什么,但无论如何,最好在 php 中进行一个万无一失的测试。

我想到了几个想法,我想知道这些是否安全,或者是否有人有更好的想法。

A. 一个想法是查看当前路径:类似于

define ( 'DEV_SERVER',

           (substr(

                   strtolower($_SERVER['DOCUMENT_ROOT']),

                   0,8)

            =="c:/xampp")
);

B. 另一个想法是检查是否存在具有特定名称的本地文件,但访问文件系统似乎工作量太大。

提前感谢所有见解!

4

1 回答 1

0

您也可以尝试 gethostname()。

虽然,最好的方法可能是只将开发特定的东西部署到开发服务器。即,将这些脚本与您的生产/回归测试脚本分开。您不希望这些 DEV 服务器特定的东西意外地对用户可见。

于 2014-01-06T02:39:23.043 回答