回答
是的,這很好,雖然你的術語是錯誤的:這是散列,哈希不是加密。
您還應該分析X-FORWARDED-FOR
和Client-IP
標題,除非您想阻止代理人身後的每個人,就好像他們是單個用戶(例如大公司,高中等的所有人)。
您可能需要考慮將IP轉換爲數字。查找起來更快一些,因爲它是數字數據,您可以在查詢中使用INET_ATON()和INET_NTOA()。
http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_inet-aton
mysql> SELECT INET_ATON('10.0.5.9');
-> 167773449
http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_inet-ntoa
mysql> SELECT INET_NTOA(167773449);
-> '10.0.5.9'
PHP來轉換爲數字
$ipA = $_SERVER["REMOTE_ADDR"];
$octets = split ("\.", $ipA);
$ipN = ($octets[3] + $octets[2] * 256 + $octets[1] * pow(256,2) + $octets[0] * pow(256,3);
而且,你可能要考慮你使用此功能使用的IP地址:
/* Get Actual IP Address, in spite of proxy server */
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{ $ip=$_SERVER['HTTP_CLIENT_IP']; }
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
else
{ $ip=$_SERVER['REMOTE_ADDR']; }
return $ip;
}
RE - 編輯對IPv6:
原則仍然適用,但IPv6的轉換在How to convert IPv6 from binary for storage in MySQL
IPv6怎麼樣? – 2012-04-30 08:26:08
不可以。你不會像這樣在點八位字節中得到IPv6地址。您的代碼將無法正常工作。 – 2012-05-01 22:24:37
公平 - 沒有正確迴應評論,所以改變了我的答案,以反映鏈接到IPv6轉換,但我相信原始問題的答案仍然適用。 – GDP 2012-05-02 14:11:33
- 1. 加密IP地址
- 2. 客戶端的IP地址/ MAC地址
- 3. Git-ssh密鑰/ IP地址
- 4. 使用java的用戶的IP地址
- 5. WebClient客戶端IP地址
- 6. Azure客戶端IP地址
- 7. 客戶端ip地址
- 8. 獲取用戶的IP地址
- 9. 功能得到用戶的IP地址
- 10. 用戶的IP地址127.0.0.1始終
- 11. 查找用戶的IP地址
- 12. 基於用戶IP地址的API
- 13. 如何查詢用戶的IP地址?
- 14. 獲取網絡用戶的IP地址
- 15. 用戶多個網卡的IP地址
- 16. 使用javascript的客戶端IP地址
- 17. 是用戶唯一的IP地址嗎?
- 18. 如何根據表中的IP地址列表驗證用戶的IP地址?
- 19. 允許訪問一個網址的用戶名/密碼等人從IP地址
- 20. 可用IP地址呈現給用戶
- 21. 當用戶使用IP地址打開網站時如何獲取IP地址?
- 22. 的IP地址
- 23. IP地址文本框用戶控件
- 24. 獲取Facebook用戶IP地址
- 25. 角度/用戶界面ip地址
- 26. 從用戶獲取IP地址
- 27. Javascript - 添加用戶的IP地址以形成文本框
- 28. 永久添加IP地址的RSA主機密鑰
- 29. MAC地址和IP地址
- 30. 變換IP地址,IP地址範圍(起始IP - 結束IP)
雞蛋裏挑骨頭的評論已經回答了,但是MD5是一種散列算法,加密不。加密是不同的。 – 2012-04-29 04:55:13
爲什麼要加密?爲什麼要引用IPS?他們是不可預測的。 – Philip 2012-04-29 04:57:19
爲什麼要加密? IP不是敏感信息。 – 2012-04-29 04:58:16