下面是使用fsockopen伪造ip。
  
$out = "POST $path HTTP/1.1\r\n";
$out .= "Accept: */*\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out.="X-Forwarded-For: ".$ip."\r\n"; //主要是这里来构造IP
$out .= "Host: ".$domain_ip."\r\n";
$out .= "Content-Length: ".$content_length."\r\n";
$out .= "Connection: close\r\n\r\n";
$out .= $content."\r\n\r\n"; //提交的内容这个是获得客户端ip。本地可以获得伪造的ip,服务器上获得却是两个ip。比如变成这样116.7.54.78, 27.151.95.121。求帮忙      if (getenv("HTTP_X_FORWARDED_FOR")) 

$ip = getenv("HTTP_X_FORWARDED_FOR"); 

elseif (getenv("HTTP_CLIENT_IP")) 

$ip = getenv("HTTP_CLIENT_IP"); 

elseif (getenv("REMOTE_ADDR"))

$ip = getenv("REMOTE_ADDR"); 

else 

$ip = ""; 

解决方案 »

  1.   

    用 elseif 也能得到两个么?
      

  2.   

    你给出的获取ip的代码,不可能取到2个ip地址
    应该是你给错了代码
      

  3.   

    我是想问为什么获取到的ip是想这样子的116.7.54.78, 27.151.95.121
    http协议这么规定的,
    http://zh.wikipedia.org/zh-cn/X-Forwarded-For
      

  4.   

    我是想问为什么获取到的ip是想这样子的116.7.54.78, 27.151.95.121
    http协议这么规定的,
    http://zh.wikipedia.org/zh-cn/X-Forwarded-For
    谢谢,看到了。