2012-05-16 128 views
0

我之前沒有使用過$_SERVER['HTTP_REFERER'],我不知道如何使用它找到該用戶通過點擊Google搜索結果中的鏈接來到我的網站。用戶可以來自google.com,google.co.uk等....

幫助非常感謝。

回答

8
$url = $_SERVER['HTTP_REFERER']; 
$query = parse_url ($url, PHP_URL_QUERY); 
$host = parse_url ($url, PHP_URL_HOST); 
if (strstr ($query, 'q=') && strstr ($host, 'google.')) { 
    // user came from google 
else { 
    // user didnt come from google 
} 
+3

但是,使用HTTP_REFERER時要小心。它在頁面標題中發送,所以它很容易被客戶端修改。不要小心處理它,而不是像$ _POST或$ _GET變量那樣小心。 –

+0

那麼是否有比HTTP_REFERER更好的解決方案? – guitarlass

+1

不,對不起! :) – Jeroen

0

這是我的解決方案,當頁面請求中不存在引用鏈接時,不會發出任何警告。

public function doesUserCameFromCrawler() { 
    $crawlerList=array("google.","yandex.","bing."); 

    if (isset($_SERVER['HTTP_REFERER'])) { 
     $referringPage = parse_url($_SERVER['HTTP_REFERER']); 
     if (isset($referringPage['host'])) { 
      $referringHost = $referringPage['host']; 
      foreach ($crawlerList as $crawler) { 
       if (strpos(strtolower($referringHost),$crawler) !== FALSE) { 
        return TRUE; 
       } 
      } 
     } 
    } 
    return FALSE; 
} 
相關問題