qua*_*tme 12
knittl更近,而不是二进制(16)用VARBINARY(16)user196009 回答一个相关的问题.这个对我有用.怎么样?
存储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
?>
Run Code Online (Sandbox Code Playgroud)
检索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
?>
Run Code Online (Sandbox Code Playgroud)
它应该与IPv6地址一起使用(我有一个IPv4连接).我不是专家所以我不知道varbinary长度是否正确,但我怎么说,它对我有用.
为了检查PHP版本/主机中是否启用了"IPv6支持":
<?php
phpinfo(INFO_GENERAL); // http://php.net/manual/es/function.phpinfo.php
?>
Run Code Online (Sandbox Code Playgroud)
点分十进制IPv4地址可以转换为整数,最大大小为32位.IPv6地址是128位.由于128位不适合PHP int,因此在PHP中使用会很麻烦.
如果您只想连接并使用IPv6地址,请省去麻烦并将其另存为文本.如果要应用网络掩码并计算子网,则需要转换它们.
归档时间: |
|
查看次数: |
8890 次 |
最近记录: |