>Может кто знает как реализовать функцию которую нисполняет например скрипт написаный на
>перле :
>http://jodies.de/ipcalc?host=192.168.0.1&mask1=24&mask2=
>только на PHP.
>Чтобы на входе было например
>192.168.0.1/24 а на выходе 192.168.0.1-192.168.0.254
>Заранее большое спасибо
было б чего тут реализовывать :)
<?
function net2cidr($net)
{
for($n = 0; $net && 0xFFFF; $n++) {
$net = $net << 1;
}
return $n;
}
function cidr2net($cidr)
{
$net = 1;
for($n = 0; $n < 31-$cidr; $n++) {
$net = $net << 1 | 1;
}
return ~$net;
}
function bin2string($bin) {
$res = "";
for($p=31; $p >= 0; $p--) {
$res .= ($bin & (1 << $p)) ? "1" : "0";
if($p > 0 && $p % 8 == 0) $res .= " ";
}
return $res;
}
$ip = $_GET['ip'];
$mask = $_GET['mask'];
$cidr = $_GET['cidr'];
if($mask)
$cidr = net2cidr(ip2long($mask));
else
$mask = long2ip(cidr2net($cidr));
$lIp = ip2long($ip);
$lMask = ip2long($mask);
$lNet = $lIp & $lMask;
$lBroadcast = $lNet | (~$lMask);
$lMin = $lNet + 1;
$lMax = $lBroadcast - 1;
$net = long2ip($lNet);
$broadcast = long2ip($lBroadcast);
$min = long2ip($lMin);
$max = long2ip($lMax);
$bIp = bin2string($lIp);
$bMask = bin2string($lMask);
$bNet = bin2string($lNet);
$bBroadcast = bin2string($lBroadcast);
$bMin = bin2string($lMin);
$bMax = bin2string($lMax);
?>
<html>
<head>
<title>IP Calc</title>
</head>
<body>
<h1>IP Calc</h1>
<table>
<form action=ip.php method=GET>
<tr><td>IP</td><td><input type=input name=ip value="<?= $_GET['ip'] ?>"></td></tr>
<tr><td>Mask</td><td><input type=input name=mask value="<?= $_GET['mask'] ?>"></td></tr>
<tr><td>CIDR</td><td><input type=input name=cidr value="<?= $_GET['cidr'] ?>"></td></tr>
<tr><td> </td><td><input type=submit value=Calc></td></tr>
</form>
</table>
<h2>Result</h2>
<table>
<tr><td>IP</td><td><?= $ip ?></td><td><?= $bIp ?></td></tr>
<tr><td>Mask</td><td><?= $mask ?></td><td><?= $bMask ?></td></tr>
<tr><td>Net</td><td><?= $net ?></td><td><?= $bNet ?></td></tr>
<tr><td>CIDR</td><td><?= $cidr ?></td><td> </td></tr>
<tr><td>Broadcast</td><td><?= $broadcast ?></td><td><?= $bBroadcast ?></td></tr>
<tr><td>Min</td><td><?= $min ?></td><td><?= $bMin ?></td></tr>
<tr><td>Max</td><td><?= $max ?></td><td><?= $bMax ?></td></tr>
</table>
</body>
</html>