我有麻烦让我的php页面只运行时,它是由服务器本身的请求。
这是我现在的记录:
if ($_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR']) {
//process page
} else {
$this->redirect('http://' . $_SERVER['HTTP_HOST'] . '/404');
}
然而,当我旋转它时,它不会给出任何错误,也不会返回任何东西。如果我去掉check,它就会像预期的那样输出HTML。
我尝试回显这两个值,分别得到192.168.1.186和192.168.1.225。我知道他们是不同的(这是由服务器本身运行),但我怎么能解决它?这个代码来自于这个S.O答案
你的问题的标题意味着我可以提供一个与你的问题主体不完全匹配的答案。
我的回答是,把你的整个脚本放在一个巨大的if
语句似乎不安全,不可维护。
如果其他计算机可以运行你的脚本,比如通过网络访问它,你就需要这样的保护。
但是,如果服务器是唯一可以运行脚本的机器,为什么不把它放在一个只有服务器可以访问的地方呢?例如,在web可访问目录之上的一个目录级别,或者在具有700
权限的子目录中。或者使用.htaccess
限制访问
使用您的服务器配置来限制文件访问是更容易和更好的。例如,您可以在特定目录中使用.htaccess
文件,其中包含以下内容:
order deny,allow
deny from all
allow from 127.0.0.1
拒绝来自127.0.0.1 (localhost)的所有流量。当有人试图从另一台计算机访问这些文件时,这将返回一个403错误。