2009-08-12 118 views
1

我正在试图阻止从PHP中的两个IP地址访问,最好通知他们的阻止。阻止从特定IP访问网站?

无论如何,我可以做到这一点,或者它只是不可能使用PHP?

我已经看到了一个JavaScript版本,但如果浏览器关闭了JavaScript,那么他们肯定能够避开它。

感谢您提前给予任何建议/帮助。

+1

请记住,这几乎是无用的。如果有人真的打扰了你和你的网站,那么当你从你的网站上禁止他们时,他们可能会变得更加激烈。他们可以使用任何免费的基于Web的代理,如www.hidemyass.com,并获得一个新的IP。或者他们可能在一个动态的IP连接上,他们所需要做的就是重置他们的路由器。这是一个开始,但不要认为这是一个最终解决方案,因为实际上并没有解决方案。 – ryeguy 2009-08-12 15:01:22

+0

这不是一个问题,它只是一个临时措施。从好的一面来说,我知道IP地址末尾的用户具有静态IP,并且由于网络限制而无法从他们的站点访问Web代理。 – LiamGu 2009-08-12 15:15:14

回答

2
的index.php中

if($_SERVER['REMOTE_ADDR'] == '10.0.0.1' || $_SERVER['REMOTE_ADDR'] == '10.0.0.2') 
    die('Go away, banned person'); 

或者这个版本中,当你开始有不止一个或两个禁令成为更易于管理:

$bans = array(
    '10.0.0.1' => true, 
    '10.0.0.2' => true, 
); 
if(!empty($bans[$_SERVER['REMOTE_ADDR']])) 
    die('Go away, banned person'); 
+2

从技术上讲,它应该是... if(isset($ bans [$ _ SERVER ['REMOTE_ADDR']])&& $ bans [$ _ SERVER ['REMOTE_ADDR']])以避免获得E_NOTICE – VoteyDisciple 2009-08-12 14:53:38

+0

是的。有时候我仍然用Perl来思考。编辑去更好。 :) – chaos 2009-08-12 14:56:06

1

$ _ SERVER [ 'REMOTE_ADDR']应该包含IP。

0

一个要阻止的地方是在Web服务器上。然后只允许IP甚至可以把它放到你的站点,你不需要引入任何特殊的处理代码。

http://www.iphowto.com/Block_IP_How_To.aspx

+1

他想通知禁令的用户。这可以从网络服务器完成吗? – krdluzni 2009-08-12 14:57:31

2

看看这个page。它包含一个获取客户端IP地址的功能。你可以在任何页面上调用它,如果IP地址匹配,则显示错误消息。

然而一个更简单的解决方案是使用.htaccess

以下行添加到.htaccess

order allow,deny 
deny from xx.xx.xx.xxx 
deny from xxx.xxx.xxx 
allow from all 

其中xxx是你想阻止的IP号码。