我知道我们可以使用用户方法来获取用户数据。
$user = $this->ion_auth->user()->row();
echo $user->ip_address;但是这提供了一个输出u�8/�,我可以检索实际的ip地址,比如127.0.0.1。
更新
只是为了帮助别人。
在h2ooooooo的帮助下,我发现ipaddress通过bin2hex(inet_pton($ip))传递,然后保存在db中。要检索,请使用
$user = $this->ion_auth->user()->row();
echo inet_ntop($user->ip_address);发布于 2013-08-20 08:40:32
您确定IP是使用inet_pton存储的吗?
如果我们简单地将每两个字符转换成十进制,这就是结果:
<?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转换为这种十六进制格式,可以执行以下操作:
<?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
?>演示
发布于 2013-08-20 08:29:07
所以,一个很好的主意是去看看它的功能:
http://php.net/manual/en/function.inet-pton.php
你会看到inet()解码它-试试看你得到了什么
https://stackoverflow.com/questions/18329035
复制相似问题