繁体   English   中英

如何检查包含IP地址的php变量是否位于inet_aton格式的两个IP地址范围内

[英]how to check if a php variable containing an ip address, lies in the range of two ip addresses in inet_aton format

查询图片我有一个被列入黑名单的表,具有start_ip和end_ip列,我需要检查我的变量$ stat_ip(表中名为Hasoffers的另一列)是否在范围之间,即大于或等于start_ip且小于或等于使用MySQL查询到last_ip。 我的查询像这样$ result = mysql_query(“从inet_aton(network_start_ip)和inet_aton(network_last_ip)和inet_aton(network_last_ip)列入黑名单的地方,选择” inet_aton(network_start_ip),inet_aton(network_last_ip)“。 这确实返回0计数,这不是预期的输出。 感谢有关mysql查询的帮助。

<?php
include('adodb/adodb.inc.php');
$link=mysql_connect("166.26.18.122","vcc","abcd1234");
mysql_select_db("vcc");
$pl=mysql_query("SELECT stat_ip fromHasoffers");
$count=mysql_num_rows($pl);

while($row=mysql_fetch_array($pl))
{
$stat_ip=$row['stat_ip'];
echo ip($stat_ip)."<br>";
$ip_Num=ip2long($stat_ip);
}

function blacklisted($ip_Num)
{
    $result=mysql_query("Select inet_aton(network_start_ip),inet_aton(network_last_ip) from blacklisted where '".$ip_Num."' BETWEEN  inet_aton(network_start_ip) AND inet_aton(network_last_ip)");
    $count=mysql_num_rows($result);


  return $count;

}
?>

您需要在Hasoffers查询中执行inet_aton。 像这样

$pl=mysql_query("SELECT inet_aton(stat_ip) from Hasoffers");
$count=mysql_num_rows($pl);

如果不执行inet_aton,则$ stat_ip带有点的值。 例如192.168.0.1

所以你的第二个查询就像

Select inet_aton(network_start_ip),inet_aton(network_last_ip) from blacklisted where '192.168.0.1' BETWEEN  inet_aton(network_start_ip) AND inet_aton(network_last_ip)

简而言之,更改第一个查询,并希望它可以解决您的问题。

UPDATE

如您所说,您无法更改查询。 尝试这个

$pl=mysql_query("SELECT stat_ip from Hasoffers");    
while($row=mysql_fetch_array($pl))
{
$stat_ip=$row['stat_ip'];
echo ip($stat_ip)."<br>";
//for converting to LongInt
$ip_Num=ip2long($stat_ip);

} 
// Now pass $ip_Num instead of $stat_ip in your function 
function blacklisted($ip_Num)

您可以在下面的行中插入ip2long(ipaddress)函数

        **$ip_Num=str_replace('.','',$stat_ip);**

ip2long是工作行inet_aton() mysql函数。 ip2long是一个php函数,例如:

$ ip = '10 .0.5.9'; printf(“%u \\ n”,ip2long($ ip));

167773449

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM