If we have an ip address as below:
127.0.0.1
Does both functions convert the ip address to the same number, or do they differ and have different result?
They are almost exactly the same. ip2long sometimes returns a negative value because PHP uses signed numbers for valuation, while MySQL uses unsigned.
Both are evaluated as x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
, but in PHP, due to the long being signed, will show negative values for certain IP addresses.
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
So, addresses while translate to over +2,147,483,647 will wrap around and give negative values.
ip2long("254.254.254.254"); // -16843010
This link describes this in detail.
in short, no, but this function is:
function ipv4touint($ipv4){
return sprintf('%u',ip2long($ipv4));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With