2012-07-31 130 views
0

我正在研究一個腳本,它可以將每個訪問者的引用url保存到一個會話var,然後將其存儲到數據庫中,並將其他數據(如將google訪問者帶到網站的google關鍵字/短語以及引用鏈接是一個普通的谷歌列表(又名有機結果)或付費鏈接(谷歌AdWords)。 到目前爲止,我已經想出了這個,但它並不總是工作。做更多的閱讀我發現,在幾種情況下,http_referer被阻止或隱藏,所以我正在尋找更好的方式來實現這個工作。我可以使用什麼來代替HTTP_REFERER進行可靠的跟蹤?

$session = & JFactory::getSession(); 
    if (!$session->get('referrer', $origref, 'extref')) //If does not exist 
    { 
     $origref = $_SERVER['HTTP_REFERER']; 
     $session->set('referrer', $origref, 'extref'); 

     $url = $session->get('referrer', $origref, 'extref'); 
     if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) { 
      $q = 'No referer'; 
     } 

     $parts_url = parse_url($url); 
     $query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : ''); 
     if(!$query) { 
      $q = 'Not from Google'; 
     } 
     parse_str($query, $parts_query); 
     $q = isset($parts_query['q']) ? $parts_query['q'] : isset($parts_query['oq']) ? $parts_query['oq'] : (isset($parts_query['p']) ? $parts_query['p'] : 'could not fetch keyword'); 

     if(stristr($origref, 'aclk')) { // if referer is a google adwords link as opposed to an organic link 
      $type = ', paid link, '.$_SERVER['HTTP_USER_AGENT']; 
     } else { 
      $type = ', organic result, '.$_SERVER['HTTP_USER_AGENT']; 
     } 

    $ginfo = $q.$type; 
    $session->set('referrer', $ginfo, 'extref'); 
    } 

    function search_engine_query_string($url = false) { 
     if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) { 
      return 'No referer'; 
     } 

     $parts_url = parse_url($url); 
     $query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : ''); 
     if(!$query) { 
      return 'Not from Google'; 
     } 
     parse_str($query, $parts_query); 
     return isset($parts_query['q']) ? $parts_query['q'] : (isset($parts_query['p']) ? $parts_query['p'] : ''); 
    } 

任何想法?

+1

'Referer:'是最接近你會得到的。它絕不可靠,但它是所有可用選項中最可靠的。 – DaveRandom 2012-07-31 17:33:02

+1

沒有「可靠的」跟蹤人的方法。只有更少的故障傾向方法 – 2012-07-31 17:37:26

回答

0

另一種典型的方法是爲跟蹤器身份擁有專門的條目url。例如:

subdomain.mysite.com/tracker?userid=12345&source=adwords 

當該URL被擊中,那麼你知道來源是AdWords,而您會立即用header重定向將用戶重定向回主頁。這樣,他們不知道跟蹤,它應該是非常可靠的。

0

我可能是錯的,但除非你控制兩端(即引用和引用),我認爲超出你已經做的事情是不可能的。

如果是出於分析目的,您可以使用Google AnalyticsGoogle Webmaster Tools

它們兩者都相輔相成,並且非常想讓你想用你的腳本完成

+0

我知道,但我也需要上述腳本才能工作。 – bikey77 2012-07-31 18:21:50

相關問題