通过得到客户端IP,和从数据库中得到IP位数

<?
/*********
 实现思想:通过得到客户端IP,和从数据库中得到IP位数
 将两者做与操作得到网段,再与数据库中的网段进行比较
**********/
function clearIp(){
 $fromIp = $_SERVERS['REMOTE_ADDR'];
 $isForbid = false;
 $result = mysql_query('Select `ip` From `forbid_ip_table`');
 while(!$result){
  $ipRage = explode('/',$result['ip']);
  $forbidIp = $ipRage[1];//IP段
  $maskLen = $ipRage[0];//子码位数
  if(getIpRage($fromIp,$maskLen) == $ofrbidIp){
   $isForbid = true;
   break;
  }
 }
 if($isForbid){
  header('Location:error.html');
 }
}
//将IP通过与子网掩码与操作得到网段
function getIpRage($ipAddress,$maskLen){
  $ipArr = explode('.',$ipAddress);
  $binStr = '';
  $ipRage = '';//返回的IP
  for($i = 0 ;$i<count($ipArr); $i++){
   $binStr = decbin($ipArr[$i]);
   if(strlen($binStr)<8){
    $zero = '';
    for($z = 0;$z<8-$binStr; $z++){
     $zero .='0';
    }
    $binStr .= $zero;
   }
   $tempIp = '';//局部变量
   for($j = 0; $j<8; $j++ ){
    $yesOrNot = $maskLen >0?1:0;
    $tempIp .= $binStr[$j]==$yesOrNot?$yesOrNot:0;
    $maskLen--;
   }
   $ipRage .= bindec($tempIp).'.';
  }

  return $ipRage;
}
//以下可以测试
$arr = getIpRage('192.168.112.122',14);
print_r($arr);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值