有什么区别?
每个功能都有特定的情况或原因吗?如果是的话,你能举一些这些情况的例子吗?
PHP.net说它们用于执行外部程序.参见参考 从我看到的例子中,我没有看到任何明显的区别.
如果我只是简单地运行一个脚本(bash或python),你建议我使用哪个函数?
我知道有许多$ _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) 我想获得使用我的网站的客户端IP地址.我正在使用PHP $_SERVER超全局:
$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
但我发现使用它无法提供正确的IP地址.我得到了我的IP地址,看到它与我的IP地址不同,我也可以在某些网站上看到我的IP地址,例如:
http://whatismyipaddress.com/
Run Code Online (Sandbox Code Playgroud)
我粘贴了我的PHP函数的IP地址,但是这个网站没有显示结果.这个问题是如何产生的,如何获得客户端的IP地址?
我正在使用这个PHP代码来获取访问者的IP地址:
<?php echo $_SERVER['REMOTE_ADDR']; ?>
Run Code Online (Sandbox Code Playgroud)
但是,当他们使用代理时,我无法从访问者那里获得真正的IP地址.在这种情况下,有没有办法获取访问者的IP地址?
我正在尝试使用PHP来跟踪和记录访问我网站的用户/访问者$_SERVER['REMOTE_ADDR'].PHP中IP地址跟踪的典型方法.
但是,我使用CloudFlare进行缓存等,并将其IP地址作为CloudFlare接收:
108.162.212.* - 108.162.239.*
在使用CloudFlare的同时检索实际用户/访客IP地址的正确方法是什么?
获取所有客户端IP地址的正确方法是http.Request什么?在PHP有很多的变数,我应该检查.Go上也一样吗?
我发现的一个是:
req.RemoteAddr
Run Code Online (Sandbox Code Playgroud)
请求是否区分大小写?例如和?x-forwarded-for相同?(来自)X-Forwarded-ForX-FORWARDED-FORreq.Header.Get("X-FORWARDED-FOR")
我试图通过PHP获取我的机器的IP地址.为此,我写的代码如下:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
Run Code Online (Sandbox Code Playgroud)
但这段代码不起作用.它正在返回" ::1".请帮我如何获取实际的IP地址.
我开发了一个PHP Web服务.我想记录使用此Web服务的WS客户端的所有传入连接.如何获取客户端的IP地址?的价值
$_SERVER['HTTP_CLIENT_IP']Run Code Online (Sandbox Code Playgroud)
好像总是空着的. 通过PHP获取用户IP地址的最准确方法是什么?
我已经阅读了很多关于它的SO问题和答案,但大多数答案都是陈旧的,用户评论说这些方法是不安全的.
例如,看看这个问题(2011):如何在PHP中获取客户端IP地址?
蒂姆肯尼迪的回答包含一个建议,使用如下:
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
Run Code Online (Sandbox Code Playgroud)
但正如我已经阅读了很多,我已经看到使用X_FORWARDED_FOR是不安全的,因为下面的评论强调:
除非您完全了解它的作用,否则请勿使用上述代码!由于这个原因,我已经看到了MASSIVE安全漏洞.客户端可以将X-Forwarded-For或Client-IP标头设置为它想要的任意值.除非您有可信的反向代理,否则不应使用任何这些值.
由于我完全不知道它的作用,我不想承担风险.他说它不安全,但没有提供一种安全的方法来获取用户的IP地址.
我试过这个简单的$_SERVER['REMOTE_ADDR'];,但这会返回错误的IP.我已经测试了这个,我的真实IP遵循这种模式:78.57.xxx.xxx但我得到的IP地址如下:81.7.xxx.xxx
所以你有什么想法吗?
php ×9
ip-address ×6
ip ×3
logging ×2
cloudflare ×1
command ×1
exec ×1
go ×1
http ×1
proxy ×1
security ×1
web-services ×1