我目前正在開發一個營銷模塊,用於跟蹤將流量帶入我們網站的網站。有沒有辦法獲得域名或I.P.使用PHP引用網站的地址?我相信HTTP_REFERER並不總是出現在$ _SERVER全局中。確定I.P.引薦網站地址
謝謝先進。
我目前正在開發一個營銷模塊,用於跟蹤將流量帶入我們網站的網站。有沒有辦法獲得域名或I.P.使用PHP引用網站的地址?我相信HTTP_REFERER並不總是出現在$ _SERVER全局中。確定I.P.引薦網站地址
謝謝先進。
的HTTP_REFERER
頭必須由客戶端瀏覽器發送。你不能依靠它被髮送。
方案時,它不會發送包括:
在這些情況下,你無能爲力。
但是如果你控制鏈接的網站,你可以在的GET參數添加引用ID的鏈接:
http://example.com/?from=mysite
然後你可以分析你的腳本from
參數。
將referrer字符串轉換爲IP通常不是一個好主意,因爲看到儘可能多的IP地址可以承載數十或數百個站點。區別哪個用戶來自哪個站點將會以這種方式丟失。
引用地址出現在來自所有協作瀏覽器的請求頭中,其中存在引薦者。如果用戶只是輸入了你的網址,那麼就沒有引用者。
這是一個微不足道的設計問題向URL轉換成IP地址:
<?php
$raddr = gethostbyaddr($_SERVER['HTTP_REFERER']);
?>
「瑣碎的編程問題」實際上是一個問題。 – DOK 2011-06-03 08:46:47
@DOK我不認爲OP真的想要這個。將主機名轉換爲IP地址是一個可怕的想法(因爲您有效地銷燬了用戶來自哪個站點的信息)。 – 2011-06-03 08:49:02
@Pekka,它實際上很重要因爲我需要從發起網站的IP地址獲得國家:D – 2011-06-03 09:15:16
如果HTTP_REFERER沒有在服務器出現,則該用戶沒有通過鏈接進入您的網站,或者他有一種通過瀏覽器屏蔽該變量的方法。沒有其他的事情可以做。
如果它沒有顯示在$ _SERVER中,通常意味着客戶端沒有發送它。引薦來源是不可信的數據,因爲它完全取決於用戶(更具體地說是他們的瀏覽器)。
最好的辦法是檢查引用者是否在那裏,然後使用域上的gethostbyname()函數來獲得你想要的IP。
您可以確定reffering URL與$_SERVER['HTTP_REFERER']
但請記住這是可以操縱的。您可以使用gethostbyname($referrer)
來獲取IP地址。
參見:http://php.net/manual/en/reserved.variables.server.php和http://php.net/manual/en/function.gethostbyname.php
正如我所懷疑的。謝謝! Upped +並被接受! – 2011-06-03 09:16:19