2010-07-28 30 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