ip地址计算器php源码,php版 子网掩码计算器
php代码
/p>
"http://www.w3.org/TR/html4/loose.dtd">
PHP Subnet Calculator
PHP Subnet Calculator |
IP & Mask or CIDR: |
//Start table
print "
$end='
|
';
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= "0" . substr(dotbin($bin_net,$cdr_nmask),1) ;
//}elseif (ereg('^10',$bin_net)){
}elseif (preg_match("/^10/",$bin_net)){
$class="B";
$dotbin_net= "10" . substr(dotbin($bin_net,$cdr_nmask),2) ;
//}elseif (ereg('^110',$bin_net)){
}elseif (preg_match("/^110/",$bin_net)){
$class="C";
$dotbin_net= "110" . substr(dotbin($bin_net,$cdr_nmask),3) ;
//}elseif (ereg('^1110',$bin_net)){
}elseif (preg_match("/^1110/",$bin_net)){
$class="D";
$dotbin_net= "1110" . substr(dotbin($bin_net,$cdr_nmask),4) ;
$special="Class D = Multicast Address Space.";
}else{
$class="E";
$dotbin_net= "1111" . substr(dotbin($bin_net,$cdr_nmask),4) ;
$special="Class E = Experimental Address Space.";
}
//if (ereg('^(00001010)|(101011000001)|(1100000010101000)',$bin_net)){
if (preg_match("/^(00001010)|(101011000001)|(1100000010101000)/",$bin_net)){
$special='( RFC-1918 Private Internet Address. )';
}
// Print Results
tr('Address:',"$dq_host",
''.dotbin($bin_host,$cdr_nmask).'');
tr('Netmask:',''.bintodq($bin_nmask)." = $cdr_nmask",
''.dotbin($bin_nmask, $cdr_nmask).'');
tr('Wildcard:', ''.bintodq($bin_wmask).'',
''.dotbin($bin_wmask, $cdr_nmask).'');
tr('Network:', ''.bintodq($bin_net).'',
"$dotbin_net","(Class $class)");
tr('Broadcast:',''.bintodq($bin_bcast).'',
''.dotbin($bin_bcast, $cdr_nmask).'');
tr('HostMin:', ''.bintodq($bin_first).'',
''.dotbin($bin_first, $cdr_nmask).'');
tr('HostMax:', ''.bintodq($bin_last).'',
''.dotbin($bin_last, $cdr_nmask).'');
@tr('Hosts/Net:', ''.$host_total.'', "$special");
print "$end";
function binnmtowm($binin){
$binin=rtrim($binin, "0");
//if (!ereg("0",$binin) ){
if (!preg_match("/0/",$binin) ){
return str_pad(str_replace("1","0",$binin), 32, "1");
} else return "1010101010101010101010101010101010101010";
}
function bintocdr ($binin){
return strlen(rtrim($binin,"0"));
}
function bintodq ($binin) {
if ($binin=="N/A") return $binin;
$binin=explode(".", chunk_split($binin,8,"."));
for ($i=0; $i<4 ; $i++) {
$dq[$i]=bindec($binin[$i]);
}
return implode(".",$dq) ;
}
function bintoint ($binin){
return bindec($binin);
}
function binwmtonm($binin){
$binin=rtrim($binin, "1");
//if (!ereg("1",$binin)){
if (!preg_match("/1/",$binin)){
return str_pad(str_replace("0","1",$binin), 32, "0");
} else return "1010101010101010101010101010101010101010";
}
function cdrtobin ($cdrin){
return str_pad(str_pad("", $cdrin, "1"), 32, "0");
}
function dotbin($binin,$cdr_nmask){
// splits 32 bit bin into dotted bin octets
if ($binin=="N/A") return $binin;
$oct=rtrim(chunk_split($binin,8,"."),".");
if ($cdr_nmask > 0){
$offset=sprintf("%u",$cdr_nmask/8) + $cdr_nmask ;
return substr($oct,0,$offset ) . " " . substr($oct,$offset) ;
} else {
return $oct;
}
}
function dqtobin($dqin) {
$dq = explode(".",$dqin);
for ($i=0; $i<4 ; $i++) {
$bin[$i]=str_pad(decbin($dq[$i]), 8, "0", STR_PAD_LEFT);
}
return implode("",$bin);
}
function inttobin ($intin) {
return str_pad(decbin($intin), 32, "0", STR_PAD_LEFT);
}
function tr(){
echo "\t
";
for($i=0; $i".func_get_arg($i)."";
echo "
\n";
}
?>
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
ip地址计算器php源码,php版 子网掩码计算器相关推荐
- 基于纯真本地数据库的 IP 地址查询 PHP 源码
<?php /*** 纯真 IP 数据库查询 * * 参考资料:* - 纯真 IP 数据库 http://www.cz88.net/ip/* - PHP 读取纯真IP地址数据库 http://j ...
- php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码
* 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...
- IP 地址冲突检测程序源码(解决某种情况下检测无效的问题)
1. 参考代码 先上一个 arp 参考代码,但是这个参考代码不能全面的检测 IP 地址冲突. http://blog.csdn.net/wanxiao009/article/details/56222 ...
- 彩虹秒赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制
彩虹秒赞7.7云任务系统整站源码,在这里完全免费分享了.功能还是非常不错的哦,喜欢的小伙伴们惊喜吧! 以下文字为源码包里面的介绍,具体功能和情况请自行下载测试了解 新版特性: 1.全新界面,响应式布局 ...
- 最新ChatGPT网站源码运营版+支持ai绘画+GPT4.0
1.网站系统源码介绍: 2023最新ChatGPT网站源码+支持ChatGPT4.0+支持Midjourney绘画+用户会员套餐+用户每日签到领取+后台管理+一键更新版本,支持手机电脑不同布局页面自适 ...
- 分享一款最近比较火爆的宝石迷情游戏游戏源码安卓版
这个是本人上几个月的一个作品,该作品我已经发布到安卓教程网了,现在分享这款宝石迷情游戏游戏源码安卓版吧,这是一款经典的宝石迷情小游戏源码宝石迷情是一款跨平台的宝石消除类游戏,和之前的宝石类消除游戏不同 ...
- KuYun企业授权管理系统源码开源版
简介: KuYun企业授权管理系统源码开源版,带代理.工单.盗版检测管理等功能 1.网站基本管理.系统设置.公告设置.接口设置.价格设置.下载设置. 2.文章管理.广告轮图管理.添加授权.授权列表.授 ...
- 爱站CMS综合管理系统源码php版
简介: 爱站CMS综合管理系统源码php版,运行于以下环境:Apache2.2,PHP Version 5.4.15,Zend Guard Loader 6.0,MySQL-5.5.20 代码全部开源 ...
- 微信广告任务平台源码运营版
介绍: 微信广告任务平台源码运营版|带教程|对接第三方个人免签 微信广告任务平台源码运营版|带教程|对接第三方个人免签,程序采用Thinkphp3.2开发而来! 带第三方个人免签,支持VIP等级充值. ...
最新文章
- 飞桨模型保存_重磅发布开源框架、生物计算平台螺旋桨,百度飞桨交了年终成绩单...
- java中的与运算符
- STM32 进阶教程 11 - RAM中运行程序
- animation in Jquery used in ui5
- background 互联网图片_cssbackground-image和layer-background-image的区别
- laravel常用响应操作
- 披星戴月地辛苦割胶或成历史,海南胶园迎来这一“神器”!
- 5G 会榨干手机的电池?
- int和Integer的区别,哪个在定义变量好
- 二、Nginx 反向代理配置初学个人理解
- keySet和entrySet效率比较
- bzoj3159: 决战
- [论文评析]人体脉搏波速与血压之间关系探索新突破
- ubuntu防火墙安装arm架构说明
- 购买域名后如何使用?
- linux snoop抓包命令,snoop抓包简介
- 英特尔第十代处理器为什么不支持win7_Intel 第十代CPU(部分U)装WIN7
- 西交《物理化学》在线作业
- 第五章 大数定律及中心极限定律
- 遍身罗绮者 不是养蚕人