Ric*_*uez 88 php localhost detection
换句话说,如何判断使用我的Web应用程序的人是否在其所在的服务器上?如果我没记错的话,PHPMyAdmin出于安全原因做了类似的事情.
mau*_*ris 157
您还可以使用$_SERVER['REMOTE_ADDR']Web服务器提供的客户端请求的IP地址.
$whitelist = array(
'127.0.0.1',
'::1'
);
if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
// not valid
}
Run Code Online (Sandbox Code Playgroud)
Jen*_*ell 21
作为补充,作为一种功能......
function isLocalhost($whitelist = ['127.0.0.1', '::1']) {
return in_array($_SERVER['REMOTE_ADDR'], $whitelist);
}
Run Code Online (Sandbox Code Playgroud)
ree*_*ogi 14
较新的OS用户(Win 7,8)也可能发现有必要在其白名单数组中包含IPV6格式的远程地址:
$whitelist = array('127.0.0.1', "::1");
if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
// not valid
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*lad 11
我很抱歉,但所有这些答案对我来说似乎都很糟糕。我建议重新表述这个问题,因为从某种意义上说,所有机器都是“本地主机”。
问题应该是;如何根据在哪台机器上执行不同的代码路径来运行不同的代码路径。
在我看来,最简单的方法是创建一个名为 DEVMACHINE 或任何你真正想要的文件,然后简单地检查
file_exists('DEVMACHINE')
上传到实时托管环境时,请记住排除此文件!
这个解决方案不依赖于网络配置,它不能被欺骗,并且可以很容易地在运行“live-code”和“dev-code”之间切换。
它似乎不应该使用$_SERVER['HTTP_HOST'],因为这是http标头中的值,很容易伪造.
您也可以使用$_SERVER["REMOTE_ADDR"],这是更安全的价值,但也可以伪造.这remote_addr是Apache返回结果的地址.
| 归档时间: |
|
| 查看次数: |
78159 次 |
| 最近记录: |