簡體   English   中英

如何在PHP之前檢測用戶來自哪個網站?

[英]How to detect the site a user came from before mine in PHP?

在使用PHP訪問我的網站之前,如何檢測用戶來自的網站?

您可以檢查Referer HTTP標頭

echo $_SERVER['HTTP_REFERER'];


但是請注意,Referer是由瀏覽器發送的 ,這意味着:

  • 可以將其禁用 (這不是強制性的,只是瀏覽器可以發送的其他信息)
  • 它可以被偽造 (即任何人都可以發送任何內容,例如,甚至可以進行一些SQL注入或XSS注入)


因此,您可以使用引薦來源網址在您的網站上提供其他功能,但是您必須確保您的網站不依賴它:即使引薦來源網址不存在,您的應用程序仍必須能夠運行。

嘗試這個:

$_SERVER['HTTP_REFERER']

有關更多信息,請參見HTTP Referrer

引薦來源網址(或稱為HTTP引薦來源網址,也稱為HTTP標頭字段,是常見的拼寫錯誤引薦來源),它從互聯網網頁或資源的角度來標識網頁的地址(通常是URL,即更為通用的URI)或與其鏈接的資源的i18n更新的IRI)。 通過檢查引薦來源網址,新頁面可以查看請求的來源。

echo $_SERVER['HTTP_REFERER'];

它並不完全可靠,並且可以被欺騙,但是通常,它將填充用戶單擊以進入腳本的URL。

您需要查看HTTP Referer標頭:

$_SERVER['HTTP_REFERER']

有關更多HTTP標頭,請參見PHP文檔

就像@Andrew Hare 在他的回答中指出的那樣 ,獲取HTTP_REFERRER服務器值的值(這是作為HTTP請求的一部分發送的標頭)將告訴您該瀏覽器是最后一次打開該站點。

但是,應注意的是,出於多種合理原因,此標頭/服務器變量完全沒有可能是沒有值的,其中一些原因是:

  • 用戶在同一窗口中輸入網站的URL
  • 用戶在同一窗口中打開了一個書簽
  • 用戶剛剛打開瀏覽器並完成了上述操作之一

以上所有內容實際上都是同一事物的變體,在這種情況下,使用相同的瀏覽器窗口轉到另一個站點,但是沒有通過單擊文檔中的鏈接(導致它們到達該鏈接),重定向或歷史記錄中的頁面所提示的其他操作。

以上說明是正確的,但請記住,用戶可以使他/她的瀏覽器不發送此信息,否則他們可能會弄亂此信息並發送錯誤的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM