我本机的IP是192.168.1.11 但是用PHP获取后的IP怎么是127.0.0.1,有没有办法得到真实的IP地址?

解决方案 »

  1.   

    你是不是以 http://127.0.0.1/wwww/   访问的?
    换成是不是以 http://192.168.1.11/wwww/   试试
      

  2.   

    你是不是以 http://127.0.0.1/wwww/  访问的?
    换成 http://192.168.1.11/wwww/  试试
      

  3.   

    $_SERVER['REMOTE_ADDR']就是客户端的真实ip(代理除外)
      

  4.   

    你的站点在本机,访问的时候用了http://127.0.0.1或localhost或机器名,获取的IP当然就是127.0.0.1
    如果用http://192.168.1.11或hosts文件中配个域名指向192.168.1.11后用域名访问,$_SERVER['REMOTE_ADDR']得到的就是网卡上的IP了。
      

  5.   

    .... 这是小问题,给我一个我写的获取真实ip的类吧<?php
    /**
     *  ip 类
     */
    class Ip {
    /**
     *  构造方法
     * 
     *  @return void
     */
    public function __construct() {

    }

    /**
     *  获取 IP 地址
     * 
     *  @return string
     */
    public function getIP() {
    if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'),'unknow'))
    $ip = getenv('HTTP_CLIENT_IP');    /* $ip IP 地址 */
    else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknow'))
    $ip = getenv('HTTP_X_FORWARDED_FOR');
    else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'),'unknow'))
    $ip = getenv('REMOTE_ADDR');
    else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'],'unknow'))
    $ip = $_SERVER['REMOTE_ADDR']; /*
     *  验证 IP 合法性
     */
    $validator = new Ip_Validtor();
        /* $validator = 验证是否是合法IP */ 
    if ($validator->isValid($ip))
    return $ip;
    else
    return '未知';
    }
    }
    ?>
      

  6.   

    如果server在集群环境下的话也得不到