我有一個記錄用戶訪問的應用程序。這些訪問中沒有一個訪問是直接訪問的,100%的訪問是從另一個站點引用的。HTTP引用不總是通過
我將$_SERVER['HTTP_REFERER']
傳遞給數據庫。大約35%的記錄主題通過了引用者,其餘都是空白的。
這是有原因嗎?
我有一個記錄用戶訪問的應用程序。這些訪問中沒有一個訪問是直接訪問的,100%的訪問是從另一個站點引用的。HTTP引用不總是通過
我將$_SERVER['HTTP_REFERER']
傳遞給數據庫。大約35%的記錄主題通過了引用者,其餘都是空白的。
這是有原因嗎?
如果用戶直接訪問您的網站,則不存在引薦來源。也有可能他們已經設置好了,所以他們的瀏覽器永遠不會發送推薦人。
根據this answer,瀏覽器不需要在進行元刷新時必須發送引薦者。
我在上面提到過,大多數用戶可能不夠科技,無法改變他們的瀏覽器設置以禁用被傳遞的引用者。我知道我會做出一個假設,說少於1%的用戶這樣做。不過,我認爲這是一個好的假設和保守的估計。 – reefine 2011-04-13 02:39:54
好吧,你問是怎麼可能的,而不是可能的。如果你只是想用你的假設,爲什麼還要問呢? – 2011-04-13 02:41:07
@user您無法找到問題,因爲他們無法直接訪問您的網站。我認爲比「不到1%的用戶」更多地屬於這一類別。 – 2011-04-13 02:43:36
瀏覽器有時將在請求中包含referer
。但這不是強制性的(referer
是100%自願的)。事實上,圍繞referer
存在各種隱私和安全問題(例如,如果HTTPS站點將您引向HTTP站點,則瀏覽器不應將引用站點包含爲referer
)。所以不要依賴它。
HTTP_REFERER
可能爲空,有幾個原因。
window.open
,window.location
甚至設定target="_blank"
爲錨或meta refresh
。file_get_contents
,fopen
和其他語言中的其他類似功能可能不會設置引用請求。當可能發生這種情況時可能會有更多的情況,如果我能想到任何看似合理的事情,我會更新。
在這種情況下,可以保留這個信息的網站上提到的任何替代方法?我的意思是用戶的信息在A站點上 – 1myb 2013-10-18 03:23:38
在Internet Explorer 4.0及更高版本中從一個文檔鏈接到另一個文檔時,如果鏈接是從HTTPS頁面到非HTTPS頁面,則不會發送Referer標頭。當鏈接是從非HTTP(S)協議(如file://)到另一個頁面時,Referer頭也不會被髮送。欲瞭解更多信息,請訪問此處link
當您發現爲什麼丟失它時很常見: - 有時候您的引用者是https,並且您在http上,它將會丟失。
否則: - 用戶通過直接輸入url訪問。 - 用戶已添加書籤並來自書籤。 - 有時用戶將瀏覽器的URL保留爲默認值(類似書籤) - 代理瀏覽可能會刪除引用者。 - 以漫遊訪問網站(搜索引擎)
'HTTP_REFERER'是瀏覽器發送的環境變量。某些瀏覽器可以讓用戶在發出http請求時將其刪除。這不是一個PHP問題或根本問題。 – Khez 2011-04-13 02:33:43
'Referer:'不是一個強制性的HTTP頭。它的存在取決於瀏覽器設置(或代理)並且出於隱私原因通常被禁用。 – mario 2011-04-13 02:35:34
我禁用了我的。 – Andre 2011-04-13 02:36:58