Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4507

Re: IP-Maske berechnen

From Arno Welzel <usenet@arnowelzel.de>
Newsgroups de.comp.lang.php
Subject Re: IP-Maske berechnen
Date 2019-05-28 12:05 +0200
Message-ID <gl4ffbFc35nU1@mid.individual.net> (permalink)
References (3 earlier) <qcebpe$1g0$1@news.albasani.net> <l3enee93lfs0934fmprni2ogvajcbalibh@neppi.net> <qchd7c$t1h$1@news.albasani.net> <gl3e26F59h7U2@mid.individual.net> <qcinoc$aba$1@news.albasani.net>

Show all headers | View raw


Klaus Ketelaer:

> Am 28.05.2019 um 02:35 schrieb Arno Welzel:
>> Klaus Ketelaer:
>>
>>> Am 27.05.2019 um 12:22 schrieb Willi Marquart:
>>>> Klaus Ketelaer schrieb:
>>>>
>>>>>
>>>>> Die Maske 134.119.0.0/20 soll den IP-Bereich
>>>>>
>>>>>     134.119.0.1 bis 134.119.15.254
>> [...]
>>> Nicht dass die Umsetzung schwer wäre, aber ganz so banal
>>> ist es doch nicht, denn eine IP-Adresse besteht nunmal
>>> nicht aus Nullen und Einsen. Ein wenig mehr Arbeit ist
>>> das schon. Für meine Bedürfnisse sind es dann über 200
>>> Zeilen Code geworden.
>>
>> Ähm...?
>>
>> Also für einen Adressbereich die Netzwerkmaske zu berechnen sind
>> wirklich nur zwei oder drei Befehle. Deine 200 Zeilen Code haben
>> definitiv nicht nur Netzwerkmasken berechnet.
> 
> Dann wird es wohl doch etwas Fertiges geben...

Nein, ich meinte auch mit eigenem Code sollte das mit ein paar Zeilen zu
machen sein. Selbst wenn man die Adressen erst in binäre Darstellung
umbaut und dann "zu Fuß" die einzelnen Bits vergleicht, komme ich nicht
auf 200 Zeilen Code.

Deshalb hatte ich die Vermutung, dass Du meintest damit nicht nur die
Ermittelung der Netzwerkmaske für eine gegebene Anfangs- und Endadresse
eines IPv4-Subnetzes.

Ein Beispiel auf die Schnelle - in Aktion zu sehen auf
<https://arnowelzel.de/samples/ipv4mask.php>:

<?php
$address1 = '134.119.0.1';
$address2 = '134.119.15.254';

$address1Binary = substr(
    '00000000000000000000000000000000' . decbin(ip2long($address1)),
    -32);
$address2Binary = substr(
    '00000000000000000000000000000000' . decbin(ip2long($address2)),
    -32);

$mask = 32;
while (true) {
    if (substr($address1Binary, 32-$mask, 1) !=
        substr($address2Binary, 32-$mask, 1)) {
        break;
    }
    $mask--;
    if ($mask == 0) {
        break;
    }
}

$network = long2ip((int)bindec(
    substr(substr($address1Binary, 0, $mask) .
    '00000000000000000000000000000000', 0, 32)));

echo sprintf(
    'Address range: %s - %s, network: %s/%d',
    $address1, $address2, $network, $mask);
?>


-- 
Arno Welzel
https://arnowelzel.de

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-26 12:10 +0200
  Re: IP-Maske berechnen Claus Reibenstein <4spamersonly@kabelmail.de> - 2019-05-26 16:26 +0200
    Re: IP-Maske berechnen Ralph Aichinger <ra@pi.h5.or.at> - 2019-05-26 16:41 +0200
      Re: IP-Maske berechnen Claus Reibenstein <4spamersonly@kabelmail.de> - 2019-05-27 11:14 +0200
        Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-27 11:28 +0200
        Re: IP-Maske berechnen Ralph Aichinger <ra@pi.h5.or.at> - 2019-05-27 11:57 +0200
          Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-27 15:28 +0200
            Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-27 15:36 +0200
            Re: IP-Maske berechnen Ralph Aichinger <ra@pi.h5.or.at> - 2019-05-27 15:41 +0200
    Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-26 16:59 +0200
      Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-26 17:36 +0200
        Re: IP-Maske berechnen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2019-05-26 16:58 +0000
        Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-27 08:08 +0200
        Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-27 12:22 +0200
          Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-27 12:34 +0200
            Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-27 17:43 +0200
              Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-27 18:16 +0200
              Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-28 11:51 +0200
                Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-30 12:21 +0200
                Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-30 20:06 +0200
                Re: IP-Maske berechnen Willi Marquart <usenet@neppi.net> - 2019-05-31 07:57 +0200
                Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-06-01 13:17 +0200
          Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-27 21:19 +0200
            Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-28 02:35 +0200
              Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-28 09:24 +0200
                Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-28 12:05 +0200
                Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-30 09:05 +0200
                Re: IP-Maske berechnen Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2019-05-30 07:11 +0000
                Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-30 20:10 +0200
            Re: IP-Maske berechnen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-05-28 15:40 +0200
              Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-30 09:13 +0200
                Re: IP-Maske berechnen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-05-30 10:12 +0200
                Re: IP-Maske berechnen Klaus Ketelaer <noreply@spambouncer.de> - 2019-05-30 14:26 +0200
                Re: IP-Maske berechnen Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-05-30 14:41 +0200
                Re: IP-Maske berechnen Arno Welzel <usenet@arnowelzel.de> - 2019-05-30 20:22 +0200

csiph-web