2011-12-21 18 views
4

特定のIPv4アドレスが特定のネットワークにあるかどうかを判断する機能を探しています。IPアドレスがネットワーク内にあるかどうか確認してください

thisと似ています。ただし、必要がない場合は、完全なフレームワークをインストールしたり、ホイールを再構築したりすることは望ましくありません。アイデアは、次のようになり

: - EDIT -

function IsInNetwork($givenIP, $networkIP, $netmask) { 
    // ??? 
} 

$valid = IsInNetwork("10.0.9.35", "10.0.8.0", "255.255.254.0"); 

リッチ・アダムスの助けを借りて

、彼は正しい方向に私を指摘し、次のを思い付いた:

このような
function IsInNetwork2($givenIP, $networkIP, $netmask) 
{ 
    $ipaddr = ip2long($givenIP); 
    $netip = ip2long($networkIP); 
    $netmask = (ip2long($netmask) * -1) + $netip; 

    if ($ipaddr >= $netip && $ipaddr <= $netmask){ 
     return true; 
    } else { 
     return false; 
    } 
} 

答えて

4

何かが、

function IsInNetwork($givenIP, $networkIP, $netmask) 
{ 
    return ((ip2long($givenIP) & ip2long($networkIP)) == ip2long($network)); 
} 

$valid = IsInNetwork("10.0.9.35", "10.0.8.0", "255.255.254.0"); // true 
を動作するはずです
+0

ありがとう、それは正しい方向に私を指摘した。私はそれを少し変更しなければならなかったが、それは機能する。 – jinanwow

+0

こんにちは、$ neworkの値はどこですか? – MCurbelo

関連する問題