1

我无法让我的 php 页面仅在服务器本身请求时运行。

这就是我现在所拥有的:

if ($_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']) {
        //process page
} else {
        $this->redirect('http://' . $_SERVER['HTTP_HOST'] . '/404');
}

但是,当我卷曲它时,它不会给出任何错误或返回任何东西。如果我删除检查,它会按预期吐出 HTML。

我尝试回显这两个值并分别得到 192.168.1.186 和 192.168.1.225。我确实意识到它们是不同的(这是由服务器本身运行的),但是我该如何解决呢?此代码来自this SO answer

4

2 回答 2

0

您问题的标题暗示我可以提供与您的问题主体不完全匹配的答案。

我对此的回应是,将你的整个脚本放在一个巨大的if语句中似乎有点不安全和不可维护。

如果其他计算机可以运行您的脚本,例如通过网络访问它,您将需要这样的守卫。

但是,如果服务器是唯一可以运行脚本的机器,为什么不把它放在只有服务器可以访问的地方呢?例如,网络可访问目录之上的一个目录级别或具有700权限的子目录。或用于.htaccess限制访问。

这似乎更安全,更易于维护。

于 2013-05-21T21:53:21.360 回答
0

使用您的服务器配置来限制文件访问会更容易更好。例如,您可以.htaccess在特定目录中使用具有以下内容的文件:

order deny,allow
deny from all
allow from 127.0.0.1

拒绝除 127.0.0.1 (localhost) 以外的所有流量。当有人尝试从另一台计算机访问这些文件时,这将返回 403 错误。

于 2013-05-21T21:55:24.050 回答