2011-08-27 195 views
2
function getIp() { 
    return "<?php echo $_SERVER['REMOTE_ADDR']; ?>"; 
} 

我想调整或重做此操作,以便某些操作只能从本地主机或我的isp服务器进行。我可以使它适用于127.0.0.1的JavaScript,但不适用于其他版本。比较IP地址

感谢任何帮助;谢谢

+3

是什么的JavaScript与此有关呢?你应该澄清你的问题。 – Brad

+0

如果客户端禁用JavaScript,那么是什么?它看起来像你试图实现某种安全。这不是这样。 –

+0

不要想办法检查':: 1'。 – glglgl

回答

5

你真的想在服务器上完成这项工作。如果你在客户端检查IP地址,那么人们可以很容易地绕过这个IP地址。例如,通过使用像Firebug这样的网络检查器在浏览器中修改代码。

幸运的是很简单的在服务器端做的事:

$_SERVER['REMOTE_ADDR']变量是一个简单的字符串,所以你应该能够使用字符串比较来检查所需的IP地址。

例如像:

<?php 
    if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1" || $_SERVER['REMOTE_ADDR'] == "1.2.3.4") { 
     echo "Show secret things here"; 
    } 
?> 
+0

谢谢大家,特别是St3fan。有用。我应该解释我所做的不是一个软件解决方案,而是一个使用软件的解决方案。我主要关心的是其他部分,但在我看来,我需要做一些编码作为专业帮助的一种性能规格。 –

+0

问题标题是“比较IP地址”。请注意,字符串比较通常不是比较ip地址的好主意!原因是有多个字符串表示相同的IP。例如,IP“127.0.0.1”等于“127.000.000.001”,“127.00.000.1”或甚至“0:0:0:0:ffff:7f00:1”(如ipv6)命名一些。如果您知道您的IP处于某种标准化格式,则只能进行字符串比较。这可能是'$ _SERVER ['REMOTE_ADDR']'这样做的(我没有发现任何内容),但它也可能取决于PHP版本,操作系统等。 –

+0

为了安全起见,最好使用'if ip2long($ _ SERVER ['REMOTE_ADDR'])=== ip2long(“127.0.0.1”))'(仅适用于ipv4)。 –