$_SERVER["'$HTTP_X_FORWARD_FOR"]; 
==>
$_SERVER["HTTP_X_FORWARD_FOR"]; $HTTP_SERVER_VARS["$REMOTE_ADDR"]; 
==>
$HTTP_SERVER_VARS["REMOTE_ADDR"]; ......这是你自己粗心所导致的!

解决方案 »

  1.   

    程序中的多出来的$,是我贴上来时改成另一种写法时手误,但确实有这个的问题。$_SERVER["HTTP_X_FORWARDED_FOR"]和$HTTP_X_FORWARDED_FOR在子程序中不能正确返回值。比如下面的程序没错吧,就是返不回值.
    <?php
    getip();
    function getip() {
    if ($_SERVER) {
    if ( $HTTP_X_FORWARDED_FOR ) {
    $realip = $HTTP_X_FORWARDED_FOR;
    } elseif ( $HTTP_CLIENT_IP ) {
    $realip = $HTTP_CLIENT_IP;
    } else {
    $realip = $REMOTE_ADDR;
    }} else {
    if ( $HTTP_X_FORWARDED_FOR ) {
    $realip = $HTTP_X_FORWARDED_FOR;
    } elseif ( $HTTP_CLIENT_IP) {
    $realip = $HTTP_CLIENT_IP;
    } else {
    $realip = $REMOTE_ADDR;
    }}
    print($realip."<br>\n");return $realip; 
    }?>