您的位置:首页 > 数据库

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

2008-12-19 16:37 274 查看
<?
/*********
实现思想:通过得到客户端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);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: