IP adresi kayıtlarını IP kontrolleri, IP yasaklama, ziyaretçi sayacı, oylama yapma vb. gibi nedenlerle veri tabanında tutmamız gerekebilir. Ancak veri tabanında IP adresi tutmak çok güvenli ve mantıklı bir yöntem değildir. Bu yüzden PHP'nin bize sağladığı ip2long() ve long2ip() fonksiyonları ile IP adreslerini sayısal değerlere dönüştürüp veri tabanına kayıt işlemleri yapılmalıdır.
ip2long()
ip2long() fonksiyonu IP adresini 32 bitlik signed (işaretli) bir değere dönüştürür (ya negatif ya da pozitif bir değer). Eğer pozitif bir değer dönerse problem değil ama negatif bir değer dönerse bunu printf kullanarak pozitif bir değere dönüştürmeliyiz.
<?php
$ip = "192.0.35.122";
$long = ip2long($ip);
echo $long; // Çıktı: -1073732742
printf("%u", $long); // Çıktı: 3221234554
// 4294967296 - 1073732742 = 3221234554
?>
long2ip()
long2ip() fonksiyonu ip2long() fonksiyonundan elde ettiğimiz değeri tekrar IP adresine dönüştürür. Bir nevi ip2long() fonksiyonunun sağlaması diyebiliriz.
<?php
$ip = long2ip(3221234554);
echo $ip; // Çıktı: 192.0.35.122
?>