相关疑难解决方法(0)

使用PHP在MySQL数据库中存储的IP地址

mysql中IP地址的正确字段类型是什么?什么是使用PHP存储它的正确方法?

php mysql database ip field

57
推荐指数
3
解决办法
7万
查看次数

如何在mySQL中存储IP

本周我们在办公室里进行了一场健康的辩论.我们正在创建一个Db来存储代理信息,因为除了我们应该如何存储IP之外,我们大部分都已经制定了模式.一个阵营想要使用4个小点,一个用于每个八位位组,另一个想要使用一个大的int,INET_ATON.

这些表格将是巨大的,因此性能是关键.我在这里中间,因为我通常在我的世界中使用MS SQL和4个小的int.我对这种类型的卷存储IP没有足够的经验.

我们将使用perl和python脚本来访问数据库,以进一步将数据规范化为其他几个表,用于顶级谈话者,有趣的流量等.

我确信社区中有一些人已经做了类似于我们正在做的事情,我有兴趣听听他们的经历,哪条路线最好,1个大的int,或4个小的IP地址.

编辑 - 我们关注的一个问题是空间,这个数据库将像每天500,000,000条记录一样巨大.所以我们试图权衡空间问题和性能问题.

编辑2一些谈话已经转移到我们要存储的数据量......这不是我的问题.问题是哪个是存储IP地址的最佳方式以及原因.就像我在评论中所说的那样,我们为一家大型财富50强公司工作.我们的日志文件包含来自用户的使用数据.反过来,这些数据将用于安全上下文中,以驱动一些指标并驱动多个安全工具.

python mysql perl ip-address

24
推荐指数
3
解决办法
1万
查看次数

laravel 4将ip地址保存到模型中

我正在尝试使用Laravel 4将用户IP地址保存到我的数据库.我发现以下函数返回一个字符串

Request::getClientIp()
Run Code Online (Sandbox Code Playgroud)

我如何将它存储在我的模型中?只是一个字符串或有更有效的方式?

$table->string('ip_address');
Run Code Online (Sandbox Code Playgroud)

ip laravel laravel-4

13
推荐指数
2
解决办法
2万
查看次数

检查IP是否在子网中

我有一个表A,其中IP地址(ipNumeric)存储为无符号整数,表B包含子网(subnetNumeric):

INET_NTOA(ipNumeric) = 192.168.0.1
INET_NTOA(subnetNumeric) = 192.168.0.0
Run Code Online (Sandbox Code Playgroud)

我想检查一下这个IP是否是子网的成员.

子网是A,B和C类.

这是否可以在MySQL中的合理时间内进行,或者子网范围是否应该预先计算?

mysql ip subnet

6
推荐指数
1
解决办法
1万
查看次数

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

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

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

`ipv4` INT UNSIGNED
Run Code Online (Sandbox Code Playgroud)

INET_ATONINET_NTOA它们转换:

INSERT INTO `table` (`ipv4`) VALUES (INET_ATON("127.0.0.1"));
SELECT INET_NTOA(`ipv4`) FROM `table`;
Run Code Online (Sandbox Code Playgroud)

对于 IPv6 地址,您可以改用 a BINARY

`ipv6` BINARY(16)
Run Code Online (Sandbox Code Playgroud)

并使用PHP 的inet_ptonandinet_ntop进行转换:

'INSERT INTO `table` (`ipv6`) VALUES ("'.mysqli_real_escape_string(inet_pton('2001:4860:a005::68')).'")'
'SELECT `ipv6` FROM `table`'
$ipv6 = inet_pton($row['ipv6']);
Run Code Online (Sandbox Code Playgroud)

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

php mysql inet-aton ip2long

2
推荐指数
1
解决办法
1524
查看次数

尝试在数据库中存储IP地址.SQL错误

这是我试图用来存储客户端的IP地址的代码.我试图通过尝试在这个问题中看到的东西将ip地址存储到unsigned int:用于IP地址的MySQL数据类型是什么?

这是我的代码:

$client_ip = $_SERVER['REMOTE_ADDR'];

$ip_insert = "SELECT INET_ATON('$client_ip')";

$sql = "INSERT INTO rtv_sign_cispa (name_cispa,ip_cispa,email_cispa,message_cispa) VALUES ('$name','$ip_insert','$email','$message')";
Run Code Online (Sandbox Code Playgroud)

该语句中还有其他内容存储但只是忽略那些,它们有效,而不是IP地址.

错误:

错误:SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行'192.168.2.1''','email@email.com','Hmmmm')附近使用正确的语法

接近后的ip地址实际上显示了正确的IP,我当然只是出于安全原因将其切换到本地IP.email@email.com和Hmmm来自填写的表单以激活它,所以不要太介意.

有谁知道我做错了什么?我是SQL的新手.

php mysql sql

1
推荐指数
1
解决办法
1675
查看次数

标签 统计

mysql ×5

ip ×3

php ×3

database ×1

field ×1

inet-aton ×1

ip-address ×1

ip2long ×1

laravel ×1

laravel-4 ×1

perl ×1

python ×1

sql ×1

subnet ×1