2010-07-28 46 views
1

我在我的网站上遇到了白痴,只是被滥用。 我可以禁止他们的帐户,然后把xxx.xxx.xxx.xxx中的拒绝置于htaccess文件中。写入htaccess文件

我还有什么可以阻止他们回来吗?

这个问题的主要原因是,什么是在我的管理面板中作为选项将拒绝写入htaccess的最佳方式是什么?

感谢

回答

5

或者,只是加载IP列表到一个数据库,并检查是否存在于您的禁令名单$_SERVER['REMOTE_ADDR'],然后让PHP只是呼应了“走开”的消息。

正如Steven指出的那样,通过使用ip2long()将IP转换为数字,然后使用数字搜索数据库,您的性能也会更好,因为这比使用字符串搜索更有效率。

+2

这是一个解决方案,应该适合你的情况非常好。如果你打算收集大量的禁令(比如在高度被贩卖的网站上自动禁止),你可能会发现使用'ip2long()'和'long2ip()'而不是完全达到满的价值在数据库上进行文本搜索。 – 2010-07-28 21:18:11

0

您可以在访问您网站的任何部分时执行IP检查。 在你的管理面板中,你在数据库中存储了禁止的IP地址列表?考虑到这一点,这就是一个解决方案。

checkBannedIP(); 


function checkBannedIP() { 
    $ipAddresses = getBannnedIPs(); // Array('44.55.66.898', '465.22.78.365'); 
    if(in_array($_SERVER['REMOTE_ADDR'], $ipAdresses)) { 
     header("Location: www.google.com"); 
    } 
} 

您所需要做的就是创建getBannedIPs()函数,它是数据库中IP的列表。

因此,只需在共享的.php文件中有该函数,并在网站上的每个页面顶部调用checkBannedIP()。这意味着它会将禁止的用户IP重定向到google.com。如果人们对重定向感到沮丧,那么在网站上乱搞的人更可能会停下来。

+1

这将基本上选择所有禁止的IP每次有人访问该网站......这将相当于一个巨大的CPU负载。 – 2010-07-28 21:29:38

+0

这取决于他想存储的IP数量。如果数量相当大,那么缓存技术或阅读文件就会发挥作用。 – 2010-07-28 21:37:53

+0

对不起保罗,你的解决方案还有1个问题。它只向浏览器发送重定向头,它不会终止脚本。所以如果浏览器忽略重定向,他们仍然可以做任何他们想要的。所以你应该在header()语句之后放置一个“die()”语句。 – user400850 2010-07-28 22:00:34