Vérifier si une adresse IP privée

J'aime vérifier si une adresse IP est un réseau privé. Il ne fonctionne pas.

Mon code:

<?php
$ip = $_SERVER['REMOTE_ADDR'];

function _isPrivate($ip) 
{
    $i = explode('.', $ip);

    if ($i[0] == 10) {
        return true;
    } else if ($i[0] == 172 && $i[1] > 15 && $i[1] < 32) {
        return true;
    } else if ($i[0] == 192 && $i[1] == 168) {
        return true;
    }
    return false;
}
?>

L'autre:

<?php
$ip = $_SERVER['REMOTE_ADDR'];

function _isPrivate($ip) 
{
    $ip = ip2long($ip);
    $net_a = ip2long('10.255.255.255') >> 24; 
    $net_b = ip2long('172.31.255.255') >> 20; 
    $net_c = ip2long('192.168.255.255') >> 16; 

    return $ip >> 24 === $net_a || $ip >> 20 === $net_b || $ip >> 16 === $net_c; 
}
?>

Toute aide serait grandement appréciée, merci!

  • voir mebsd.com/coding-snipits/check-private-ip-function-php.html
  • Plages privées sont: 10.0.0.0/24, 172.16.0.0/20 et 192.168.0.0/16. Voir ma réponse ici, utilisez le bon de chevauchement méthodes d'essai pour la vérification.
  • Que voulez-vous dire par " Ce n'est pas le travail ğ? Pouvez-vous nous donner un exemple d'une adresse qui n'est pas validé? Ou au moins expliquer ce que votre code est censé faire, ce qu'il ne l'est pas?
  • Résultat:127.0.0.1 n'est pas une adresse privée. C'est juste???
  • N'a pas besoin de PHP le global $ip; plus d'accès à cette variable?
InformationsquelleAutor Ruth | 2012-12-11