如何使用PHP获取客户端IP地址?
我想记录通过他/她的IP地址登录我网站的用户.
我需要以某种方式使用JavaScript检索客户端的IP地址; 没有服务器端代码,甚至没有SSI.
但是,我并不反对使用免费的第三方脚本/服务.
如何在Python平台中独立地找到本地IP地址(即192.168.xx或10.0.xx)并仅使用标准库?
我想将$_SERVER["REMOTE_ADDR"]
PHP中返回的数据存储到数据库字段中,这非常简单.问题是我无法找到有关IPv6地址的文本表示的最大长度的任何适当信息,这是网络服务器提供的$_SERVER["REMOTE_ADDR"]
.
我对将文本表示转换为地址通常编码的128位不感兴趣,我只想知道存储返回的任何IPv6地址需要多少个字符$_SERVER["REMOTE_ADDR"]
.
我们必须Request.UserHostAddress
在ASP.NET中获取IP地址,但这通常是用户的ISP的IP地址,而不是用户的机器IP地址,例如单击链接.我怎样才能获得真实的IP地址?
例如,在Stack Overflow用户配置文件中,它是:"上次帐户活动:4小时前从86.123.127.8",但我的机器IP地址有点不同.Stack Overflow如何获得此地址?
在某些Web系统中,存在用于某些目的的IP地址检查.例如,使用某个IP地址,用户每24小时只能点击5次下载链接?此IP地址应该是唯一的,不适用于拥有大量客户端或Internet用户的ISP.
我理解得好吗?
我正在运行服务器,我想显示自己的IP地址.
获取计算机自身(如果可能的话,外部)IP地址的语法是什么?
有人写了下面的代码.
IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
localIP = ip.ToString();
}
}
return localIP;
Run Code Online (Sandbox Code Playgroud)
但是,我一般不信任作者,我不明白这段代码.有没有更好的方法呢?
我知道有许多$ _SERVER变量头可用于IP地址检索.我想知道如何使用所述变量最准确地检索用户的真实IP地址(很清楚没有方法是完美的)?
我花了一些时间试图找到一个深入的解决方案,并根据许多来源提出了以下代码.我很乐意,如果有人可以请求在答案中挖洞,或者对某些事情做些准确的解释.
编辑包括来自@Alix的优化
/**
* Retrieves the best guess of the client's actual IP address.
* Takes into account numerous HTTP proxy headers due to variations
* in how different ISPs handle IP addresses in headers between hops.
*/
public function get_ip_address() {
// Check for shared internet/ISP IP
if (!empty($_SERVER['HTTP_CLIENT_IP']) && $this->validate_ip($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
// Check for IPs passing through proxies
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// Check if multiple IP addresses exist in var
$iplist = explode(',', …
Run Code Online (Sandbox Code Playgroud) 我希望我的网站使用类似http://192.0.2.2/...
和https://192.0.2.2/...
静态内容的URL ,以避免请求中不必要的cookie并避免额外的DNS请求.
有没有办法为此目的获得SSL证书?
我不完全理解我应该如何获得远程用户IP地址.
假设我有一个简单的请求路由,例如:
app.get(/, function (req, res){
var forwardedIpsStr = req.header('x-forwarded-for');
var IP = '';
if (forwardedIpsStr) {
IP = forwardedIps = forwardedIpsStr.split(',')[0];
}
});
Run Code Online (Sandbox Code Playgroud)
上述方法是否正确获取真实用户IP地址还是有更好的方法?那些代理呢?