Sie sind fast genau gleich. ip2long gibt manchmal einen negativen Wert zurück, da PHP vorzeichenbehaftete Zahlen zur Bewertung verwendet, während MySQL unsigned.
verwendet
Beide werden als x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
ausgewertet , aber in PHP werden aufgrund der langen Signatur negative Werte für bestimmte IP-Adressen angezeigt.
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
Adressen, die in über +2.147.483.647 übersetzt werden, werden also umgebrochen und geben negative Werte aus.
ip2long("254.254.254.254"); // -16843010
Dieser Link beschreibt dies ausführlich.