gpt4 book ai didi

php - 将 IPv6 存储在数据库中

转载 作者:IT老高 更新时间:2023-10-29 00:02:57 25 4
gpt4 key购买 nike

在 MySQL 数据库中使用 PHP 存储 IP 的最佳做法是什么?有一个名为 ip2long 的函数——但这仅适用于 IPv4。但是 IPv6 呢?

我知道一个用于 IPv6 IP 的 php 函数,但它不适用于带有 PHP < 5.3 版

的 Windows

最佳答案

knittl更接近,而不是 binary(16) 使用 varbinary(16) 作为 user196009 answered在一个相关的问题中。这个对我有用。怎么样?

存储IP:

<?php
$query = "insert into stats(vis_ip, id_stat) values('" . inet_pton('66.102.7.104') . "', '1')"; // google's IP address
// using a PDO wrapper. http://www.phpclasses.org/package/5206-PHP-Execute-database-queries-from-parameters-using-PDO.html
include_once 'db.php';
$c = new DB();
$visit = $c->getResults($query); // stored as binary
?>

检索 IP:

<?php
$query = "SELECT `vis_ip` FROM `stats` WHERE `id_stat`=1";
// PDO wrapper
include_once 'db.php';
$c = new DB();
$stats = $c->getRow($query);
echo inet_ntop($stats->vis_ip); // outputs 66.102.7.104
?>

它应该适用于 IPv6 地址(我有 IPv4 连接)。我不是专家,所以我还不知道 varbinary 长度是否正确,但我怎么说,它对我有用。

为了检查您的 PHP 版本/主机中是否启用了“IPv6 支持”:

<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>

关于php - 将 IPv6 存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com