![](/img/trans.png)
[英]How do i check if a php variable($stat_ip) containing an ip address(inet_aton) lies in the range of two ip's(inet_aton format)
[英]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)
简而言之,更改第一个查询,并希望它可以解决您的问题。
如您所说,您无法更改查询。 尝试这个
$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.