儘管使用代理,仍擷取真實訪客IP 位址
通常用於取得訪客IP 位址的PHP 程式碼是:
<code class="php"><?php echo $_SERVER['REMOTE_ADDR']; ?></code>
但是,當代理程式運作時,此方法無法擷取真實IP。為了尋求此問題的解決方案,讓我們深入研究替代方法。
用於IP 確定的自訂PHP 函數
考慮到CloudFlare 連接,提供的PHP 程式碼提供了全面的解決方案以及各種其他因素:
<code class="php">function getUserIP() { // Handle CloudFlare connections if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; } $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip = $remote; } return $ip; } $user_ip = getUserIP();</code>
此程式碼將IP 位址指派給變數$user_ip,然後可以根據需要在PHP 腳本中使用該變數。
以上是使用代理程式時如何取得真實訪客IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!