获取的IP不正确 求高手

ninainiavip 2012-06-04 10:15:59
function getIP()
{
$realip;
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}

return $realip;
}
我用这个获取不到正确的ip 为什么?谁能帮我改进一下
...全文
270 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
happypiggy2010 2012-06-15
  • 打赏
  • 举报
回复
查查 myipaddress.com
helloyou0 2012-06-14
  • 打赏
  • 举报
回复
其实我想问一下怎么样才算"正确"的IP
Kogeo_Guan 2012-06-14
  • 打赏
  • 举报
回复
传输能禁止自身的 IP 发送?
观策互动 2012-06-09
  • 打赏
  • 举报
回复
你获取的ip是外网ip 路由ip是内网ip
xuzuning 2012-06-09
  • 打赏
  • 举报
回复
除了 REMOTE_ADDR 其余都是可以伪造的

60.161.156.69 小区宽带?既然是 ppp 适配器,那就是了
这实际上接入到你当地电信(网通、联通)供应商的提供互联网服务的局域网中
外网的服务器看到的ip是这个局域网的出口ip
xuzuning 2012-06-09
  • 打赏
  • 举报
回复
ip.php
<?php
echo $_SERVER['HTTP_X_FORWARDED_FOR'], '<br>';
echo $_SERVER['HTTP_CLIENT_IP'], '<br>';
echo $_SERVER['REMOTE_ADDR'], '<br>';

骗你一下
$url = 'http://localhost/ip.php';

$ip = array(
"X-FORWARDED-FOR:888.888.888.888",
"CLIENT-IP:abc.123.456.789",
"REMOTE_ADDR:222.222.333.444",
);

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $ip);//构造IP
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);


888.888.888.888
abc.123.456.789
127.0.0.1 这个是真的

可见楼上得到的 ip 有自欺欺人之嫌疑
zhuzhenxiongbest 2012-06-09
  • 打赏
  • 举报
回复

function get_client_ip(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}


试下这个获取ip的方法看看。
码无边 2012-06-08
  • 打赏
  • 举报
回复
内网ip真实吗?你输入cmd看看ip是否正确。或者是linux输入ifconfig
qq120848369 2012-06-05
  • 打赏
  • 举报
回复
IP都是真实的,不过是不是局域网NAT出去的就不好说了。

什么宽带类型?
helloyou0 2012-06-05
  • 打赏
  • 举报
回复
看起来没问题,你想要什么样的ip

[Quote=引用 5 楼 的回复:]

我们获取的IP是指什么ip,我用电脑查看了,我能获取到的是
ppp 适配器 宽带连接:
连接特定的dns 后缀...........:
ipv4地址....................:60.161.156.69这个ip,这个ip是真实的吗?什么样的ip才是真实的呀?我有些不懂了?谁能给我解释一下吗?
[/Quote]
ninainiavip 2012-06-05
  • 打赏
  • 举报
回复
我们获取的IP是指什么ip,我用电脑查看了,我能获取到的是
ppp 适配器 宽带连接:
连接特定的dns 后缀...........:
ipv4地址....................:60.161.156.69这个ip,这个ip是真实的吗?什么样的ip才是真实的呀?我有些不懂了?谁能给我解释一下吗?
Liv2005 2012-06-05
  • 打赏
  • 举报
回复
你说的不正确,是因为你在内网,而获取到的IP是你的出口IP吧....
zalvsa 2012-06-05
  • 打赏
  • 举报
回复
if($_SERVER['HTTP_CLIENT_IP']){
$m_ip=$_SERVER['HTTP_CLIENT_IP'];
} else if($_SERVER['HTTP_X_FORWARDED_FOR']){
$m_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} else{
$m_ip=$_SERVER['REMOTE_ADDR'];
}

再不正确,应该是你的IP不正确了……
qq120848369 2012-06-05
  • 打赏
  • 举报
回复
路过接分,问题太抽象了。
一起混吧 2012-06-04
  • 打赏
  • 举报
回复
你的是什么ip. 怎么获取不到。
http://developer.51cto.com/art/200911/164514.htm

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧