補充一下顯示 IP 的 PERL 程式碼:
代碼:
$ip = "$ENV{'REMOTE_ADDR'}";
print <<EOF;
$ip
EOF
例:右上位置
http://dict.tw
說明:
REMOTE_ADDR 的值是由 TCP connection 取得的,不能藉由偽造 HTTP header 改變,但是使用者可能藉由 proxy 連線,因此可能顯示的是 proxy 的 IP。
開版大的變數 HTTP_CLIENT_IP 是考慮到 proxy 的因素,甚至有人表示須考慮 HTTP_X_FORWARDED_FOR,我個人實測心得:各 proxy 版本眾多,有些強調匿名,因此這兩個變數未必可信。
而且這兩個變數是可以偽造的 (spoofing)。
你可以用這個 php 程式看到三個變數:
代碼:
<?php
/** 顯示 3 種不同的 IP **/
echo 'HTTP_CLIENT_IP=' . $_SERVER['HTTP_CLIENT_IP'] . '<BR>';
echo 'HTTP_X_FORWARDED_FOR=' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '<BR>';
echo 'REMOTE_ADDR=' . $_SERVER['REMOTE_ADDR'];
?>