Mailinglisten-Archive |
Thomas 'Balu' Walter wrote:
>
> Noe ganz normal IPv4 (?).
>
> Normale IP: 212. 172. 185. 1
> Umgewandelt in Binaer: 11010100 10101100 10111001 00000001
> Diese Binaerzahl in Dezimal: 3568089345
also quasi sowas:
von 3568089345 nach 212.172.185.1
function long2ip($longip) {
$oct1=bcdiv($longip,16777216,0);
$longip=bcmod($longip,16777216);
$oct2=bcdiv($longip,65536,0);
$longip=bcmod($longip,65536);
$oct3=bcdiv($longip,256,0);
$oct4=bcmod($longip,256);
return($oct1.".".$oct2.".".$oct3.".".$oct4);
}
und andersrum:
function ip2long($ip) {
$oct=explode(".",$ip);
return($oct[0]*16777216+$oct[1]*65536+$oct[2]*256+$oct[3]);
}
geht mit sicherheit auch ohne bc... war mal irgendwann eine meiner
ersten php-basteleien.
die ips so in der datenbank zu speichern, erfordert jedoch noch ganz
andere sachen. z.b. versuch mal eine wildcard-suche nach 137.226.2?1.*
zu realisieren o.ae... da faengste dann an, ganz gruselig bitweise zu
vergleichen. daher hab ich es damals wieder verworfen und speicherte die
ip's wieder als strings.
gruss, markus
php::bar PHP Wiki - Listenarchive