gemeinsame Route bestimmen
bearbeitet von
Hello,
Grundidee für PHP:
erstmal die Übereinstimmungen suchen
~~~php
$supernet_long = (($iplong_1 & $iplong_2) | (~$iplong_1 & ~$iplong_2));
~~~
Aber Achtung, das ist ggf. eine 64-Bit-Zahl, deshalb beim Weiterarbeiten mit `decbin()` nur die rechten 32 Stellen benutzen `substr(..., -32)`. Darin mit `strpos()` die Position der ersten "0" bestimmen. Das ist dann schon das CIDR-Suffix.
Die Bitmaske ist dann der linke Teil bis zur "0", aufgefüllt auf 32 Stellen mit "0". Zurückwandeln mit `bindec()`.
Die Netz-IP ergibt sich dann wieder aus `Bitmaske & IP[x]` (egal welche von beiden) + CIDR-Suffix.
Für den IP-Check kann man auch `filter_var` benutzen.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
gemeinsame Route bestimmen
bearbeitet von
Hello,
Grundidee für PHP:
erstmal die Übereinstimmungen suchen
~~~php
$supernet_long = (($iplong_1 & $iplong_2) | (~$iplong_1 & ~$iplong_2));
~~~
Aber Achtung, das ist ggf. eine 64-Bit-Zahl, deshalb beim Weiterarbeiten mit `decbin()` nur die rechten 32 Stellen benutzen `substr(..., -32)`. Darin mit `strpos()` die Position der ersten "0" bestimmen. Das ist dann schon das CIDR-Suffix.
Die Bitmaske ist dann der linke Teil bis zur "0", aufgefüllt auf 32 Stellen mit "0". Zurückwandeln mit `bindec()`.
Die Netz-IP ergibt sich dann wieder aus Bitmaske & IP[x] (egal welche von beiden) + CIDR-Suffix.
Für den IP-Check kann man auch `filter_var` benutzen.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
gemeinsame Route bestimmen
bearbeitet von
Hello,
Grundidee füd PHP:
erstmal die Übereinstimmungen suchen
~~~php
$supernet_long = (($iplong_1 & $iplong_2) | (~$iplong_1 & ~$iplong_2));
~~~
Aber Achtung, das ist ggf. eine 64-Bit-Zahl, deshalb beim Weiterarbeiten mit `decbin()` dnur ie rechten 32 Stellen benutzen. Darin mit `strpos()` die Position der ersten "0" bestimmen. Das ist dann schon das CIDR-Suffix.
Die Bitmaske ist dann der linke Teil bis zur "0", aufgefüllt auf 32 Stellen mit "0". Zurückwandeln mit `bindec()`.
Die Netz-IP ergibt sich dann wieder aus Bitmaske & IP[x] (egal welche von beiden) + CIDR-Suffix.
Für den IP-Check kann man auch `filter_var` benutzen.
Glück Auf
Tom vom Berg
--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.