首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查一个包含ip地址的php变量是否在inet_aton格式的两个ip地址范围内?

如何检查一个包含ip地址的php变量是否在inet_aton格式的两个ip地址范围内?
EN

Stack Overflow用户
提问于 2017-03-08 19:49:23
回答 2查看 151关注 0票数 1

Query picture我有一个名为黑名单的表,有start_ip和end_ip列,我需要使用mysql查询来检查我的变量$stat_ip(一个名为Hasoffers的表中的另一列)是否在范围(即大于或等于start_ip和小于或等于last_ip )之间。我的查询类似于这样的$result=mysql_query("Select inet_aton(network_start_ip),inet_aton(network_last_ip) from blacklisted‘“.$stat_ip.’BETWEEN inet_aton(network_start_ip) AND inet_aton(network_last_ip)")。这将返回一个0计数,这不是预期的输出。感谢有关mysql查询的帮助。

代码语言:javascript
复制
<?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;

}
?>
EN

回答 2

Stack Overflow用户

发布于 2017-03-08 19:59:11

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

代码语言:javascript
复制
$pl=mysql_query("SELECT inet_aton(stat_ip) from Hasoffers");
$count=mysql_num_rows($pl);

如果不这样做,inet_aton $stat_ip就有了点的价值。例如192.168.0.1

因此您的第二个查询如下所示

代码语言:javascript
复制
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)

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

更新

正如你所说的,你不能改变你的查询。尝尝这个

代码语言:javascript
复制
$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)
票数 1
EN

Stack Overflow用户

发布于 2017-03-08 20:20:14

您可以在下面的代码行中安装ip2long(ipaddress)函数

代码语言:javascript
复制
        **$ip_Num=str_replace('.','',$stat_ip);**

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

$ip = '10.0.5.9';printf("%u\n",ip2long($ip));

167773449

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42670569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档