php版 子网掩码计算器
程序源于 ipcalc 感谢外国友人 分享php 版本 本人做 小的改动 以支持 最新版本的php
程序源于 ipcalc 感谢外国友人 分享php 版本 本人做 小的改动 以支持 最新版本的php
<!--
PHP Subnet Calculator v1.3.
Copyright 06/25/2003 Raymond Ferguson ferguson_at_share-foo.com.
Released under GNU GPL.
Special thanks to krischan at jodies.cx for ipcalc.pl http://jodies.de/ipcalc
The presentation and concept was mostly taken from ipcalc.pl.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP Subnet Calculator</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quanta Plus">
</head>
<body bgcolor="#D3D3D3">
<center>
<form method="post" action="<?php print $_SERVER['PHP_SELF'] ?> ">
<BR><BR>
<table width="95%" align=center cellpadding=2 cellspacing=2 border=0>
<tr><td align="center" bgcolor="#999999">
<b><A HREF="http://sourceforge.net/projects/subntcalc/">PHP Subnet Calculator</A></b>
</td></tr>
</table>
<BR>
<table>
<tr>
<td>IP & Mask or CIDR: </td>
<td><input type="text" name="my_net_info" value="" size="31" maxlength="32"></td>
<td> <input type="submit" value="Calculate" name="subnetcalc">
</td>
</tr>
</table></form><br>
<?php
//Start table
print "<table cellpadding=\"2\">\n<COL span=\"4\" align=\"left\">\n" ;
$end='</table><br><br><br><br><br><table width="95%" align=center cellpadding=2 cellspacing=2 border=0>
<tr><td bgcolor="#999999"></td><tr><td align="center"><a href="http://validator.w3.org/check/referer">
<img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>
</td></tr></table></center></body></html>';
if (empty($_POST['my_net_info'])){
tr('Use IP & CIDR Netmask: ', '10.0.0.1/22');
tr('Or IP & Netmask:','10.0.0.1 255.255.252.0');
tr('Or IP & Wildcard Mask:','10.0.0.1 0.0.3.255');
print $end ;
exit ;
}
$my_net_info=rtrim($_POST['my_net_info']);
//if (! ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}(( ([0-9]{1,3}\.){3}[0-9]{1,3})|(/[0-9]{1,2}))$',$my_net_info)){
if (! preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}(( ([0-9]{1,3}\.){3}[0-9]{1,3})|(\/[0-9]{1,2}))$/",$my_net_info)){
tr("Invalid Input.");
tr('Use IP & CIDR Netmask: ', '10.0.0.1/22');
tr('Or IP & Netmask:','10.0.0.1 255.255.252.0');
tr('Or IP & Wildcard Mask:','10.0.0.1 0.0.3.255');
print $end ;
exit ;
}
//if (ereg("/",$my_net_info)){ //if cidr type mask
if (preg_match("/\//",$my_net_info)){ //if cidr type mask
$dq_host = strtok("$my_net_info", "/");
$cdr_nmask = strtok("/");
if (!($cdr_nmask >= 0 && $cdr_nmask <= 32)){
tr("Invalid CIDR value. Try an integer 0 - 32.");
print "$end";
exit ;
}
$bin_nmask=cdrtobin($cdr_nmask);
$bin_wmask=binnmtowm($bin_nmask);
} else { //Dotted quad mask?
$dqs=explode(" ", $my_net_info);
$dq_host=$dqs[0];
$bin_nmask=dqtobin($dqs[1]);
$bin_wmask=binnmtowm($bin_nmask);
//if (ereg("0",rtrim($bin_nmask, "0"))) { //Wildcard mask then? hmm?
if (preg_match("/0/",rtrim($bin_nmask, "0"))) { //Wildcard mask then? hmm?
$bin_wmask=dqtobin($dqs[1]);
$bin_nmask=binwmtonm($bin_wmask);
if (ereg("0",rtrim($bin_nmask, "0"))){ //If it's not wcard, whussup?
tr("Invalid Netmask.");
print "$end";
exit ;
}
}
$cdr_nmask=bintocdr($bin_nmask);
}
//Check for valid $dq_host
//if(! ereg('^0.',$dq_host)){
if(! preg_match("/^0\./",$dq_host)){
foreach( explode(".",$dq_host) as $octet ){
if($octet > 255){
tr("Invalid IP Address");
print $end ;
exit;
}
}
}
$bin_host=dqtobin($dq_host);
$bin_bcast=(str_pad(substr($bin_host,0,$cdr_nmask),32,1));
$bin_net=(str_pad(substr($bin_host,0,$cdr_nmask),32,0));
$bin_first=(str_pad(substr($bin_net,0,31),32,1));
$bin_last=(str_pad(substr($bin_bcast,0,31),32,0));
$host_total=(bindec(str_pad("",(32-$cdr_nmask),1)) - 1);
if ($host_total <= 0){ //Takes care of 31 and 32 bit masks.
$bin_first="N/A" ; $bin_last="N/A" ; $host_total="N/A";
if ($bin_net === $bin_bcast) $bin_bcast="N/A";
}
//Determine Class
//if (ereg('^0',$bin_net)){
if (preg_match("/^0/",$bin_net)){
$class="A";
$dotbin_net= "<font color=\"Green\">0</font>" . substr(dotbin($bin_net,$cdr_nmask),1) ;
/
- 上一篇:moodle2.4 DIY 导航block的实例
- 下一篇:php工厂模式
精彩图集
精彩文章






