回答
是的,這很好,雖然你的術語是錯誤的:這是散列,哈希不是加密。
您還應該分析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. Git-ssh密鑰/ IP地址
- 3. Azure客戶端IP地址
- 4. 客戶端ip地址
- 5. 獲取用戶的IP地址
- 6. 獲取網絡用戶的IP地址
- 7. 用戶的IP地址127.0.0.1始終
- 8. 使用javascript的客戶端IP地址
- 9. 用戶多個網卡的IP地址
- 10. 是用戶唯一的IP地址嗎?
- 11. 允許訪問一個網址的用戶名/密碼等人從IP地址
- 12. 可用IP地址呈現給用戶
- 13. 角度/用戶界面ip地址
- 14. Javascript - 添加用戶的IP地址以形成文本框
- 15. UserNamePasswordValidator中的客戶端IP地址
- 16. Python中SimpleXMLRPCServer客戶端的IP地址?
- 17. 在Sinatra獲取客戶的IP地址?
- 18. Determinig可用的IP地址
- 19. 使用的IP地址
- 20. 使用的IP地址
- 21. 如何用頁面中的IP地址替換IP地址中的IP地址(例如「國家,地區,城市」)
- 22. IP地址
- 23. php:geting ip地址
- 24. 取IP地址
- 25. ip地址
- 26. cURL IP地址
- 27. 塊IP地址
- 28. 與IP地址
- 29. ejabberd ip地址
- 30. Android的IP地址
雞蛋裏挑骨頭的評論已經回答了,但是MD5是一種散列算法,加密不。加密是不同的。 – 2012-04-29 04:55:13
爲什麼要加密?爲什麼要引用IPS?他們是不可預測的。 – Philip 2012-04-29 04:57:19
爲什麼要加密? IP不是敏感信息。 – 2012-04-29 04:58:16