(PHP 4, PHP 5)
ip2long — Noktalı IP adresi gösterimini içeren bir dizgeyi sayısal adrese dönüştürür
ip2long() işlevi noktalı gösterimini kullanarak bir IPv4 sayısal ağ adresi oluşturur.
ip2long() işlevi ayrıca, tamamı belirtilmemiş IP adresleri ile de çalışır. Daha fazla bilgi için » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm adresine bakınız.
Noktalı gösterimle bir IPv4 adresi.
Belirtilen ip_adresi geçirsizse FALSE, aksi takdirde IPv4 adresi ile döner
Sürüm: | Açıklama |
---|---|
5.0.0 | Bu sürümden önce, ip2long() işlev başarısız olduğunda -1 döndürüyordu. |
Örnek 1 - ip2long() Örneği
<?php
$ip = gethostbyname('localhost');
$out = "Bu adresler aynıdır:<br />\n";
$out .= 'http://localhost/, http://' . $ip . '/ ve http://' .
sprintf("%u", ip2long($ip)) . "/<br />\n";
echo $out;
?>
Örnek 2 - Bir IP adresinin gösterilmesi
Bu örnekte, PHP4 ve PHP 5'te printf() işleviyle dönüştürülmüş bir adresin nasıl basılacağı gösterilmiştir:
<?php
$ip = gethostbyname('mesela.dom');
$long = ip2long($ip);
if ($long == -1 || $long === FALSE) {
echo 'IP geçersiz, tekrar deneyin';
} else {
echo $ip . "\n"; // 192.0.34.166
echo $long . "\n"; // -1073732954
printf("%u\n", ip2long($ip)); // 3221234342
}
?>
Örnek 3 - IP doğrulama
ip2long() işlevi IP doğrulaması amacıyla tek başına değil, long2ip() ile birlikte kullanılmalıdır:
<?php
// IP'ler geçerli mi, bakalım. Bunu yapmak için eksik belirtilmiş
// IP adreslerini düzgün IP adreslerine dönüştürelim.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>
Bilginize:
PHP'nin tamsayı türü işaretli tamsayı olduğundan ve çoğu IP adresi negatif tamsayılarla sonuçlanacağından işaretsiz IP adresinin dizge gösterimini elde etmek için sprintf() ve printf() işlevlerinde %u değiştiricisini kullanmalısınız.
Bilginize:
ip2long() işlevi PHP 5 <= 5.0.2 sürümlerinde 255.255.255.255 adresi için FALSE döndürmektedir. Bu, PHP 5.0.3 sürümünde (PHP 4'teki gibi) -1 döndürecek şekilde düzeltilmiştir.