首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ip地址中显示ip地址

如何在ip地址中显示ip地址
EN

Stack Overflow用户
提问于 2013-08-20 07:14:37
回答 2查看 726关注 0票数 1

我知道我们可以使用用户方法来获取用户数据。

代码语言:javascript
运行
复制
$user = $this->ion_auth->user()->row();
echo $user->ip_address;

但是这提供了一个输出u�8/�,我可以检索实际的ip地址,比如127.0.0.1。

更新

只是为了帮助别人。

在h2ooooooo的帮助下,我发现ipaddress通过bin2hex(inet_pton($ip))传递,然后保存在db中。要检索,请使用

代码语言:javascript
运行
复制
$user = $this->ion_auth->user()->row();
 echo inet_ntop($user->ip_address);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-20 08:40:32

您确定IP是使用inet_pton存储的吗?

如果我们简单地将每两个字符转换成十进制,这就是结果:

代码语言:javascript
运行
复制
<?php
    $ipPacked = '75f1382f';

    $ipSegments = array();
    for ($i = 0; $i < 8; $i += 2) {
        $ipSegments[] = hexdec($ipPacked[$i] . $ipPacked[$i + 1]);
    }

    $ipReal = implode('.', $ipSegments);

    var_dump($ipReal); //string(13) "117.241.56.47"
?>

演示

那是你的正确IP吗?

如果它是 inet_pton (这是没有意义的,因为这些字符大多是常规ASCII作用域之外的字符),那么您可以简单地使用inet_ntop将其取回。

要将IP转换为这种十六进制格式,可以执行以下操作:

代码语言:javascript
运行
复制
<?php
    $ip = '117.241.56.47';
    $ipSegments = explode('.', $ip);
    $ipPacked = '';
    for ($i = 0; $i < 4; $i++) {
        $ipPacked .= sprintf("%02s", dechex((int)$ipSegments[$i]));
    }
    echo $ipPacked; //75f1382f
?>

演示

票数 2
EN

Stack Overflow用户

发布于 2013-08-20 08:29:07

所以,一个很好的主意是去看看它的功能:

http://php.net/manual/en/function.inet-pton.php

你会看到inet()解码它-试试看你得到了什么

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

https://stackoverflow.com/questions/18329035

复制
相关文章

相似问题

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