我想知道如何检测用户是否在本地主机上。
我这样做的原因是我可以在现场服务器上自动运行生产代码,但在我的机器上运行未压缩的代码,而不必一直更改链接。
我知道我可以在这样的JS中做到这一点...... if(document.URL.indexOf(“localhost:8888”)< = 0){
但是我需要在Php中为我的WordPress安装做这件事。我在这里遇到过类似的问题 - How can I detect if the user is on localhost in PHP?
所以我尝试了这个(下面),但它无法加载任何东西
<?php if(IPAddress::In(array("127.0.0.1","::1"))) { ?>
<script src="<?php bloginfo('template_url'); ?>/js/scripts.js"></script>
<?php } ?>
我也在这里尝试了建议的解决方案,但同样,对我来说不起作用How can I detect if the user is on localhost in PHP?
如果这些细节有帮助,我在Mac上使用MAMP,安装WordPress。
答案 0 :(得分:13)
使用$ _SERVER全局变量:http://www.php.net/manual/en/reserved.variables.server.php
if (in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) {
// code for localhost here
}
编辑:关于TerryE的评论,您可能想要做这样的事情(或者看看他的正则表达式答案,尽管可能不需要):
if (substr($_SERVER['REMOTE_ADDR'], 0, 4) == '127.'
|| $_SERVER['REMOTE_ADDR'] == '::1') {
// code for localhost here
}
因为localhost可以是127.0.0.0/8中的任何东西,尽管127.0.0.1是最常见的。 http://en.wikipedia.org/wiki/Localhost
虽然我的原始答案可能会很好(这是Symfony2默认使用的“保护”app_dev.php免于意外生产使用)
答案 1 :(得分:1)
与Matt的答案类似,您可以使用服务器var
if(!(strpos($_SERVER['SERVER_NAME'], 'localhost') === false)){
//on localhost
}
答案 2 :(得分:0)
使用preg_match('!127\.0\.\d+\.\d+!', $_SERVER["REMOTE_ADDR"])
。 B类匹配将是正常的,因为有时它会出现在127.0.1.1等等。