问题标签 [ip2long]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
754 浏览

php - 使用 ip2long 比较 IP 范围

我正在尝试按照ip2long本教程中的描述使用 IP: 如何检查 IP 地址是否在 PHP 中两个 IP 的范围内?

代码如下:

我已经尝试过切换高低 IP 并且仍然得到相同的结果。

为什么我的脚本无法检测到 IP 实际上在范围内?

注意:我需要将用户的 IP 与广泛的范围进行比较,例如:1.1.2.0 - 1.2.2.0。

0 投票
1 回答
462 浏览

php - 如何将 32 位系统上的 ip2long 负值存储到 MySQL

我必须将 IP 地址存储到在 32 位系统上运行的 MySQL 表中。

在 64 位系统上,我会简单地使用INT(10) UNSIGNED,因为ip2long它始终是一个绝对值。

如何让它在 32 位上工作?我有两个选择。

  1. 删除UNSIGNED并存储负值,但我不确定一旦完成此操作是否仍有可能值太大或太小(因为上限将减少一半以允许下限为负)
  2. 使用sprintf("%u",ip2long( $ip )) 结帐这篇文章(可能会比 1 慢。)

还有其他解决方案吗?

0 投票
2 回答
661 浏览

php - 无法让 ip2long() 工作

我正在尝试比较一些存储为字符串的 IP 地址。我读到ip2long()将字符串转换为整数,所以我正在玩它,看看它是否会做我想要的。所以,最初,我只是想看看转换后的 IP 是什么样子。我编写了以下代码来查看它,但没有任何内容被转换。我看不出我做错了什么。这是代码:

以下是结果示例:

IP 地址为 172.26.0.10 --- ip long 转换为

IP地址为172.26.0.31 --- ip long转换为

IP地址为172.26.0.32 --- ip long转换为

IP地址为172.26.0.33 --- ip long转换为

这是一个var_dump()用于 IP 并转换为整数的示例:

0 投票
2 回答
1707 浏览

php - 如何在 MySQL 中使用 INET_ATON 对 IP 地址进行通配符搜索?

我发现这种方法可以使用 INET_ATON 将 MySQL 数据库中的 IP 地址存储为整数:https ://stackoverflow.com/a/5133610/4491952

由于 IPv4 地址有 4 个字节长,您可以使用正好有 4 个字节的INT( UNSIGNED)

INET_ATON转换INET_NTOA它们:

对于 IPv6 地址,您可以使用 aBINARY代替:

并使用PHP 的inet_ptonandinet_ntop进行转换:

但是如何使用 INET_ATON 和 PHP 的 ip2long 函数进行通配符搜索,例如 192.168.%?

0 投票
1 回答
70 浏览

php - long2ip 不适用于数据库中的字符串

我对 long2ip 函数有疑问。使用来自 $_SERVEUR 或字符串 var 的数据,它工作正常,给了我正确的 IP。但是使用数据库中的字符串,结果是 0.0.0.0 。

我在 64 位服务器上运行,mysql 5.0.11

0 投票
3 回答
320 浏览

php - 如何使用 PHP 简化 IP 地址?尝试 long2ip(ip2long(address))

我的系统包括一个第三方盒子,它存储 IP 地址并将它们与从我的 Web 界面发送的值进行比较。我有一个问题,用户将第三方盒子的网络掩码输入为 255.255.255.000,而盒子将其存储为 255.255.255.0。然而,下次盒子重新启动并被告知掩码包含 000 时,它会断定这些值不同,并更新其数据库并重新启动。并重新启动。并重新启动。

我的意图是通过将网络掩码以简化形式 255.255.255.0 存储在我自己的系统中来解决这个问题(作为另一个示例,将 010.001.002.005 存储为 10.1.2.5)。但我是 PHP 的新手。我尝试$mask = long2ip(ip2long($mask))了将条目转换为标准化形式的代码,但只得到了 0.0.0.0。我需要做一些特别的事情来将 IP 转换为 long 和 back 吗?有没有更好的方法来简化这个?

0 投票
0 回答
45 浏览

php - 从ip地址计算+1 ip地址

我正在使用 ip2long 计算子网地址、广播地址和通配符掩码,它可以工作,但我需要从特定 IP 地址计算 +1 IP 地址,例如 10.10.10.7 我需要对 +1 IP 地址求和并得到10.10.10.8

我正在使用此代码来计算子网......但我不知道是否有可能得到它。

0 投票
0 回答
22 浏览

php - 函数 ip2long 在类中失败

当我在类中使用 ip2long 函数时,它不会返回有效结果。如果我在类之外调用该函数,如图所示,它将返回一个有效结果。但是,如果我使用该类,则转换将被忽略。所以我认为问题出在课堂上,但不知道那是什么。请有人指出我的错误,好吗?

0 投票
1 回答
120 浏览

php - ip2long("012.012.012.012") 在 Linux 上返回 false

假设 IPv4 地址表示中有前导零,例如012.012.012.012.

为了抑制前导零,我只需编写以下代码,它就可以在我的 Mac 上按预期工作:

但是这段简单的代码在 CentOS 7 上不起作用,它似乎ip2long("012.012.012.012")返回false值:

两个 PHP 版本是相同的,我希望它们返回完全相同的值。我还阅读了ip2long 文档,并试图找出这种行为是否有任何特殊选项/配置,但没有运气。

有人能引导我走向正确的方向吗?是什么让他们与众不同?我该怎么办?

0 投票
0 回答
23 浏览

php - 你能帮我理解为什么我的最后一个 ip2long 是空的吗?

我已经战斗了好几个小时了...

我想了解我的 ip 是否包含在 ip 范围列表中。

列表来自一个文件,我做了一个 foreach 和一个 if

......它不起作用......

我认为原因是这样的,如果在我的 foreach 中添加以下内容:

我得到的结果如下所示:

“末日”去哪儿了?ip2long($end)

$end 存在,有效,但 ip2long($end) 为空...

为什么?什么?在哪里?谁?

我已经为此奋斗了几个小时,但有些东西不起作用,你能帮我摆脱这个烂摊子吗?