标签: ip-address

PHP中的INET_ATON()和INET_NTOA()?

我想在我的数据库中存储IP地址,但我还需要在整个应用程序中使用它们.我读到了使用INET_ATON()INET_NTOA()在我的MySQL查询中从IP地址中获取32位无符号整数,这正是我想要的,因为它将比使用char(15)更快地搜索数据库.

问题是,我找不到一个在PHP中做同样事情的函数.我遇到的唯一一件事是:

http://php.net/manual/en/function.ip2long.php

所以我测试了它:

$ip = $_SERVER['REMOTE_ADDR'];
echo ip2long($ip);
Run Code Online (Sandbox Code Playgroud)

它什么也没输出.在他们给它的例子似乎工作,但再次我不确定是否ip2long()做同样的事情INET_ATON().

有人知道这样做的PHP函数吗?甚至是在数据库中存储IP地址的全新解决方案?

谢谢.

php mysql sql database ip-address

33
推荐指数
4
解决办法
5万
查看次数

Rails 3:验证IP字符串

在Rails 3中,是否有内置的方法来查看字符串是否是有效的IP地址?

如果没有,最简单的验证方法是什么?

regex validation ruby-on-rails ip-address

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

如何在PHP Web服务中获取客户端的IP地址?

我开发了一个PHP Web服务.我想记录使用此Web服务的WS客户端的所有传入连接.如何获取客户端的IP地址?的价值

$_SERVER['HTTP_CLIENT_IP']
Run Code Online (Sandbox Code Playgroud) 好像总是空着的.

php logging web-services ip-address

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

正则表达式中的私有IP地址标识符

我想知道这是否是匹配以私有IP地址(Perl风格的Regex)开头的字符串的最佳方式:

(^127\.0\.0\.1)|(^192\.168)|(^10\.)|(^172\.1[6-9])|(^172\.2[0-9])|(^172\.3[0-1])
Run Code Online (Sandbox Code Playgroud)

非常感谢!

regex private ip-address

31
推荐指数
4
解决办法
4万
查看次数

地理编码IP地址?

有没有人知道我可以调用任何开放的RESTful API来将用户的IP地理编码为纬度和经度?

理想情况下,它将类似于:http://google.com/geocode_api/? IP = 1.2.3.4,它将返回纬度和经度.

geocoding ip-address reverse-geocoding

31
推荐指数
4
解决办法
5万
查看次数

某些Web服务如何识别我从新位置登录?

我注意到有几个Web服务(即Steam,Facebook,Google等)能够检测到新的浏览器/新位置,在某些情况下,要求我使用电子邮件代码对其进行验证.

他们是怎么做到的?他们使用饼干吗?还有其他方法吗?这有多可靠?

如何检测用户是否从"正常"环境登录,无论是同一浏览器,同一台计算机,相同的大致位置?

web-applications ip-address geolocation ip-geolocation

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

在Heroku上获取客户端的真实IP地址

在Heroku Cedar上,我想获得客户端的IP.第一次尝试:

ENV['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为所有请求都通过代理传递.所以替代方案是使用:

ENV['HTTP_X_FORWARDED_FOR']
Run Code Online (Sandbox Code Playgroud)

但这不太安全,是吗?

如果它只包含一个值,我就拿这个.如果它包含多个值(以逗号分隔),我可以选择第一个值.

但是,如果有人操纵这个价值呢?我不能相信ENV['HTTP_X_FORWARDED_FOR'],我可以用ENV['REMOTE_ADDR'].并且我也没有可以使用的可信代理列表.

但总是必须有一些方法来可靠地获取客户端的IP地址.你知道吗?

他们的文档中,Heroku描述了X-Forwarded-For"连接到Heroku路由器的客户端的原始IP地址".

听起来好像Heroku可能会X-Forwarded-For用原始的远程IP 覆盖它.这样可以防止欺骗,对吧?有人可以验证吗?

http ip-address heroku

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

request.connection.remoteAddress现在在node.js中的:: ffff中加前缀

我最近将我的路由器更改为谷歌为Google Fiber提供的路由器(是的!)现在我注意到当我在本地服务器上开发时检查request.connection.remoteAddress时所看到的内容发生了变化.之前,我曾经看过这个:

request.connection.remoteAddress; // 192.168.1.10
Run Code Online (Sandbox Code Playgroud)

现在我看到了这个:

request.connection.remoteAddress; // ::ffff:192.168.1.10
Run Code Online (Sandbox Code Playgroud)
  1. 谁能解释一下发生了什么?
  2. 我的Node服务器是否在侦听IPv6地址?
  3. ::ffff:192.168.1.10实际上是一个IPv6地址或者是IPv4地址?
  4. 是判断remoteAddress是否为IPv6以检查字符串是否包含的最简单方法::
  5. 在数据库中存储IPv4地址时,我习惯使用类似的东西INET_ATON将它们变成大整数.我是否应该放弃这个并将所有远程地址存储为长度为45个字符的字符串(IPv6地址字符串的最大长度)

javascript networking ip-address node.js

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

如何确定Solaris系统的IP地址

当我想知道我登录的Solaris机器的IP地址时,我想发出什么命令?

unix ip networking solaris ip-address

30
推荐指数
4
解决办法
17万
查看次数

使用Boost.Asio获取本地IP地址

我目前正在寻找一种获取本地IP地址的便携方式.因为我正在使用Boost,我认为使用Boost.Asio来完成这项任务是个好主意.

网上有几个例子可以解决问题.例子:

官方Boost.Asio文档

一些亚洲页面

我只是略微修改了两个代码.Boost.Doc上的代码更改为不解析"www.boost.org",而是"localhost"或我的主机名.为了获取主机名,我使用boost :: asio :: ip :: host_name()或直接键入它作为字符串.

另外,我编写了自己的代码,它是上述示例和我从Boost文档和其他示例中收集的(小)知识的合并.

所有的资源都有效,但他们只返回了以下IP:
127.0.1.1(这不是拼写错误,最后是.1.1)
我运行并使用GCC 4.4.1在Ubuntu 9.10上编译代码

一位同事在他的机器上尝试了相同的代码,得到了
127.0.0.2(也不是一个错字......)
他用GCC 4.4.1编译并运行在Suse 11.0上(我不是100%肯定)

我不知道是否可以更改localhost(127.0.0.1),但我知道我或我的同事都没有这样做.ifconfig表示loopback使用127.0.0.1.ifconfig还找到我要搜索的公共IP(在我的情况下是141.200.182.30,子网是255.255.0.0)

这是一个Linux问题,代码不像我想象的那么便携吗?我是否需要更改其他内容或Boost.Asio根本不能解决我的问题?

我知道在Stackoverflow和其他页面上有很多关于类似主题的问题,但我找不到在我的情况下有用的信息.如果你有了有用的链接,那么如果你能指出我就很好.

PS:这是我在Boost.Doc中使用的修改代码:

#include <boost/asio.hpp>
using boost::asio::ip::tcp;    

boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(boost::asio::ip::host_name(), "");
tcp::resolver::iterator iter = resolver.resolve(query);
tcp::resolver::iterator end; // End marker.
while (iter != end)
{
    tcp::endpoint ep = *iter++;
    std::cout << ep << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ ip-address boost-asio

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