Forum Programmation.php Ranges filter IPv4 et IPv6

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
0
4
avr.
2018

Bonjour,

En PHP, j'aurais besoin de savoir si une adresse IP se trouve dans l'une d'une série de plages.

Autan l'adresse IP que les plages peuvent être IPv4 ou IPv6.

function is_ip_in_ranges( $ip, $ranges )
{
// ← dois-je ici réinventer la roue ? :/
}

$badranges= array (
  "2a03:2880:f026::/48",
  "31.13.81.0/24",
  "2a03:2880:f11b::/48",
  "31.13.91.0/24",
  "179.60.195.0/24",
  "2a03:2880:f228::/48"
);
$clientip = $_SERVER['REMOTE_ADDR']; // IPv4 ou IPv6 !

if( is_ip_in_ranges( $clientip, $badranges ) )
  echo ":(";
else
  echo ":)";

J'ai trouvé des pistes, du genre :

https://www.w3schools.com/php/filter_validate_ip.asp
Uniquement distinguer une IPv4 ou IPv6…

https://gist.github.com/tott/7684443
Uniquement IPv4 :(

Avant de réinventer la roue, je vous demande si vous avez déjà sous la main un code éprouvé :)

Merci d'avance.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.