ip2long() na 32bit systémech
Únor 8th, 2010
Funkce na převod IP adresy do číselného tvaru (ideální na ukládání a
práci s rozsahy IP v DB) se nechová korektně na 32bit systémech. Ačkoli
název napovídá, že vrací longint, na 32bitech vrací obyčejný int32,
takze přeteče a začne vracet zápornou hodnotu, postupy jak to vyřešit jsou
dva:
$ip = ip2long(‚194.108.129.194‘);
if ($ip < 0) {
$ip += 4294967296;
}
nebo
$prt = explode(‚.‘, ‚194.108.129.194‘);
$ip = 16777216*$prt[0] + 65536*$prt[1] + 256*$prt[2] + $prt[3];
Home