ip : 192.168.101.100
เพื่อแปลงเป็น interger ด้วย ip2long
$ip2 = ip2long($ip);
ใน server 64 bit ทั่วไป จะได้ค่าเป็น 3232261476
แต่ใน server 32 bit บางตัว จะได้ค่าเป็น -1062705820
เพื่อให้เขียน code แล้วได้ผลลัพธ์มากกว่า 0 เลยต้องเขียนว่า
$ip2= sprintf ('%u', ip2long($ip));
สำหรับการแปลงค่า integer กลับมาเป็น ip เราจะใช้
$ip = long2ip($ip2);
หากค่า ip2 เป็นลบ จะให้ค่าผิดพลาด
127.255.255.255
เพื่อให้ได้ ip ถูกต้อง แม้ค่าจะเป็นลบ เราเลยใช้ code นี้แทน
$ip = long2ip((int) (float) $ip2);
function get_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip=='::1') { $ip='127.0.0.1'; }
return $ip;
}
function ip_2long($ip) {
return sprintf ('%u', ip2long($ip));
}
function long_2ip($i1) {
return long2ip((int) (float) $i1);
}
29 ก.ย. 63