php检测文档索引是否为localhost
我想知道如何检测用户是否在本地主机上 我这样做的原因是,我可以在实时服务器上自动运行生产代码,但在我的机器上运行未压缩的代码,而无需一直更改链接 我知道我可以在JS中这样做。。。php检测文档索引是否为localhost,php,wordpress,if-statement,ip-address,Php,Wordpress,If Statement,Ip Address,我想知道如何检测用户是否在本地主机上 我这样做的原因是,我可以在实时服务器上自动运行生产代码,但在我的机器上运行未压缩的代码,而无需一直更改链接 我知道我可以在JS中这样做。。。 如果(document.URL.indexOf(“localhost:8888”)使用$\u服务器全局变量: 编辑:关于TerryE的评论,您可能想做类似的事情(或者查看他的正则表达式答案,尽管可能不需要): 因为localhost可以是127.0.0.0/8中的任何内容,尽管127.0.0.1是最常见的 虽然我的原始
如果(document.URL.indexOf(“localhost:8888”)使用$\u服务器全局变量: 编辑:关于TerryE的评论,您可能想做类似的事情(或者查看他的正则表达式答案,尽管可能不需要): 因为localhost可以是127.0.0.0/8中的任何内容,尽管127.0.0.1是最常见的
虽然我的原始答案可能会很好(Symfony2默认使用它来“保护”app_dev.php不被意外使用)使用
preg\u匹配(“!127\.0\.\d+.\d+!”,$\u服务器[“REMOTE\u ADDR”])
。B类匹配是可以的,因为有时会出现在127.0.1.1等版本中。类似于Matt的回答,您可以使用服务器变量
if(!(strpos($_SERVER['SERVER_NAME'], 'localhost') === false)){
//on localhost
}
Matt也是正确的:您还应该检查IPv6环回:
!(127\.0\.\d+.\d+:1)!“
你真的需要正则表达式吗?为什么localhost会是127.0.1.1?我想我只是很确定localhost总是127.0.0.1。看,你显然在你的PC/笔记本电脑上运行WinXXXX。世界上很多其他地方都运行Linux、IOS…-)啊,我不知道。但是这不是说127.0.0.X就是环回,因为/8
部分只会影响最后8位吗?因此,基本上匹配任何以127.0.0开头的字符串。
应该可以工作吗?是的,我主要运行Windows,但是有相当多的Linux经验和虚拟机。太好了,谢谢Matt。最后,你知道在加载之前检查地址是否会对性能造成影响吗?比如说,加载脚本?我认为这是非常微不足道的。如果有什么不同的话,大型数组中的可能会很慢,但2个元素不应该很慢。本质上,您正在进行两个字符串比较,因此这不会减慢您的速度。如果这是性能关键,那么无论如何,您应该为您的开发机器使用不同的引导/前端控制器。实际上,127.0.0.1/8意味着前8位是固定的。所以它不仅是127.0.0.X,甚至是127.X.Y.Z,尽管127.0.0.1是目前为止最常见的地址。哦,我明白了,我有一个backwards服务器名称并不总是可用的。
if (in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) {
// code for localhost here
}
if (substr($_SERVER['REMOTE_ADDR'], 0, 4) == '127.'
|| $_SERVER['REMOTE_ADDR'] == '::1') {
// code for localhost here
}
if(!(strpos($_SERVER['SERVER_NAME'], 'localhost') === false)){
//on localhost
}