[PHP-users 19826]Re: ネットマスク付きIPアドレスの正当性検査など

Osamu Shigematsu shige @ ravi.ne.jp
2004年 1月 9日 (金) 20:51:38 JST


重松です。こんにちは。

何がわからないんでしょう?
論理積とか、そのレベルからわからないとか?

<?php

function ip($src) {
>...$x = explode('.', $src);
>...return ($x[0] << 24) | ($x[1] << 16) | ($x[2] << 8) | $x[3];
}

$adr = "192.168.0.1";
$netmask = "192.168.0.0/255.255.255.0";
list($net, $mask) = explode('/', $netmask);

$adr = ip($adr);
$net = ip($net);
$mask = ip($mask);

if (($adr & $mask) != ($net & $mask)) {
>...die("NG");
}

?>

解説のしようもない気がするほど、簡単なコードですが、
正しい書式かどうか調べる必要があるなどの場合は、
正規表現を使うとかして、自分で何とかしてください。

あと、マスクが /24 のようにビット数で表記する場合には、
上記コードは動きません。
# まあ、コードを見ればわかるでしょうが。

というか、仕事ならば、もっとがんばったほうが良いと思います。

-- 
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/



PHP-users メーリングリストの案内