」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在 PHP 中使用 Cloudflare 時如何檢索實際訪客 IP 位址?

在 PHP 中使用 Cloudflare 時如何檢索實際訪客 IP 位址?

發佈於2024-11-08
瀏覽:592

How can I retrieve actual visitor IP addresses when using Cloudflare in PHP?

在PHP 中使用Cloudflare 檢索訪客IP 位址

追蹤網站訪客時,記錄他們的IP 位址是常見做法。但是,利用 Cloudflare 進行快取可能會帶來問題,因為傳回的 IP 位址可能是 Cloudflare 伺服器的 IP 位址。本文探討了利用 Cloudflare 時檢索實際訪客 IP 位址的方法。

Cloudflare 提供了其他有助於IP 位址檢索的伺服器變數:

  • $_SERVER["HTTP_CF_CONNECTING_IP" ]: 真實訪客IP位址
  • $_SERVERVERVER ["HTTP_CF_IPCOUNTRY"]: 訪客的IP位址Country
  • $_SERVER["HTTP_CF_RAY"]
  • $_SERVER["HTTP_CF_VISITOR"]:指示連線是透過HTTP 或HTTPS

要使用這些變量,實現以下程式碼:

if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}

此程式碼使用實際訪客 IP 位址更新 $_SERVER['REMOTE_ADDR'] 變數(如果可透過 Cloudflare 標頭取得)。

需要注意的是,如果IP 位址至關重要,可能需要驗證 $_SERVER["REMOTE_ADDR"] 值是否代表有效的 Cloudflare IP 位址。這是因為惡意行為者可能會操縱標頭以直接連接到伺服器 IP。

最新教學 更多>
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 為什麼在grid-template-colms中具有100%的顯示器,當位置設置為設置的位置時,grid-template-colly修復了? 問題: 考慮以下CSS和html: class =“ snippet-code”> ...
    程式設計 發佈於2025-03-22
  • 來自5位編碼器的CSS中的Mondrian藝術
    來自5位編碼器的CSS中的Mondrian藝術
    蒙德里安以其標誌性的繪畫風格而聞名:大膽的黑色線條構成網格,每個單元格則以紅、黃、藍、白四色填充。這種極簡主義的美學與網頁的矩形結構相得益彰,多年來一直吸引著CSS開發者進行各種嘗試。最近我看到了一些用CSS創作的蒙德里安風格作品,於是決定蒐集一些我過去見過的優秀案例,與大家分享。 Vasili...
    程式設計 發佈於2025-03-22
  • 雙向ORM關係中的“擁有方\”是什麼?為什麼重要?
    雙向ORM關係中的“擁有方\”是什麼?為什麼重要?
    在ORM映射 雙向關係的所有側是指“擁有”數據庫中“擁有”外鍵約束的實體。這意味著,對關係的更新僅在擁有方面進行跟踪和堅持。 擁有側面的合理性固有地支持通過外國鑰匙的單向關係。為了實現雙向關係,像Hibernate這樣的ORM創建其他關聯表或維護結合表以表示關係。擁有的側面概念可確保跟踪和更新關係的...
    程式設計 發佈於2025-03-22
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-03-22
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-03-22
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-03-22
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-03-22
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-03-22
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-03-22
  • 在C/C ++中定義零長度的數組是否有效?
    在C/C ++中定義零長度的數組是否有效?
    在C/C ;)in這兩個c C. in InvalId in CCC和c。根據ISO 9899:2011 6.7.6.2,代表數組大小的表達式必須是一個恆定表達式,值大於零。 語法的數組的遺留代碼的支持。但是,至關重要的是要理解此類數組未被優化。 在零長度數組(也稱為空數組)中存在,但沒有元素...
    程式設計 發佈於2025-03-22
  • 如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    使用http request 上傳文件上傳到http server,同時也提交其他參數,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    程式設計 發佈於2025-03-22
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    程式設計 發佈於2025-03-22
  • 在GO中使用數據庫時,如何處理類型轉換?
    在GO中使用數據庫時,如何處理類型轉換?
    golang類型servertion:處理數據庫類型轉換很大當使用動態類型或實現自定義接口時,這很有用。 考慮一個基於字符串的自定義類型的場景,並希望將其與數據庫驅動程序一起使用。為此,我們需要實現估價師和掃描儀的接口。但是,在實現這些互動時,我們可能會遇到錯誤:為值函數:插入或更新數據庫中時使...
    程式設計 發佈於2025-03-22
  • 在程序退出之前,我需要在C ++中明確刪除堆的堆分配嗎?
    在程序退出之前,我需要在C ++中明確刪除堆的堆分配嗎?
    在C中的顯式刪除 在C中的動態內存分配時,開發人員通常會想知道是否有必要在heap-procal extrable exit exit上進行手動調用“ delete”操作員,但開發人員通常會想知道是否需要手動調用“ delete”操作員。本文深入研究了這個主題。 在C主函數中,使用了動態分配變量(...
    程式設計 發佈於2025-03-22
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-03-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3