關於 $_SERVER['HTTP_X_FORWARDED_FOR'] 變數的主要用處為何?

edited 十月 2013 in 進階PHP討論
$_SERVER 之值好像是一與 client ip 有關的字串,且只有在使用者有透過 Proxy 向 server 請求檔案時才會有的,否則一般取得使用者 IP 都是利用 $_SERVER就夠用.

以下是我查到的資訊,但不是很懂它的意思?

With the arrival of the Google Web Accelerator, the problem of keeping track of users through $_SERVER (for a much shorter while than with cookies) has reared its ugly head anew.

For those confronted with this issue, remember that Google implements the $_SERVER header giving the IP address of the connection that it proxies.



另外,請問此 superglobal 變數的字串值長什麼樣子,
為何如下code要這樣取得ip值啊??

$myip = explode(',', $_SERVER);
$myip = $myip[0];

├134┤
不好意思,我有先試過.
但不知何原因,我明明已在 IE 的區域網路設定中有設定使用 proxy.hinet.net:80,但得到的結果, ECHO 出來都是空值!!

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=638

評論

  • edited 六月 2005
    b90220208兄...您確定您是"剛學mysql的菜鳥"嗎?

    哇勒...您的問題幾乎我都不曾去發覺....原來架站,不只懂得按照

    步驟..一步一步架設...還要實地去瞭解所有的涵義...

    您用下苦心去研究...您一定會成功...只是我實在太肉腳了..無法

    幫您解答
  • edited 六月 2005
    有人嘗試取得,也有人防:

    http://http_x_forwarded_for.anheng.com.cn/news/29/517.html
    通过研究squid的源代码,发现在/etc/squid/squid.conf中添加2行:
    header_access Via deny all
    header_access X-Forwarded-For deny all
    就可以把它关闭

    不過HINET的確實可以取得,我並不清楚為何你得到的是空值;程式碼:
    <pre>
    <?
    echo "YOUR IP ADDRESS : ";
    print_r($_SERVER['HTTP_X_FORWARDED_FOR']);
    ?>
    </pre>
    

    取得字串:
    YOUR IP ADDRESS : 220.xxx.6.26, 172.30.4.167, 61.219.37.4
    
  • edited 六月 2005
    THANKS!

    kiang 寫道:
    <pre>
    <?
    echo "YOUR IP ADDRESS : ";
    print_r($_SERVER['HTTP_X_FORWARDED_FOR']);
    ?>
    </pre>
    

    取得字串:
    YOUR IP ADDRESS : 220.xxx.6.26, 172.30.4.167, 61.219.37.4
    

    我想問的就是--
    由所得陣列中的各個ip值 , 如何分辨
    何者為 proxy host ?
    何者為實際拜訪者,是第一個嗎 ?
    還有其他情況嗎?(為什麼您的測試結果有3個ip) ├128┤
  • edited 六月 2005
    t9527 兄別這樣說,有人回應我就很高興了..
    因最近被入侵所以才開始重視伺服環境的安全,以前只為好玩都用appserv for win32,只須一直下一步就安裝好所有的東西~
    WAMP 除了會寫php,其他的都非自己掌控下所裝好的.
    現在當我埋頭於各package tarball中那麼多文件時才知以前真是太好命但也不實際...
Sign In or Register to comment.