phpbar.de logo

Mailinglisten-Archive

[php] IP als 32 Bit-Integer

[php] IP als 32 Bit-Integer

Markus Dobel dobel_(at)_femu.rwth-aachen.de
Thu, 23 Mar 2000 14:22:26 +0100


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