2011-03-07 110 views
3

鏈接我需要實現一個鏈接,點擊計數器,就會計算鏈接的點擊數數......計數器的點擊對PHP

現在我在做什麼是的,我鏈接將href指向redir.php,這將增加數據庫中的計數器,然後使用header('Location:');將其重定向到正確的URL。

這有效,但它肯定不是最好的方法。爲了使我的代碼高效,我該如何讓這個鏈接計數器更好? AJAX?

不多EXP與阿賈克斯,所以我想知道如何在AJAX做或有任何其他更好的方法......

我不希望有人寫一個機器人腳本,這將使多個請求的再導向。 PHP和搞亂統計。

回答

2

您可以在每個頁面上使用

  1. JavaScript來進行Ajax調用你的「counter.php」
  2. 添加Javascript代碼(如谷歌分析)發佈的數據庫
  3. 創建用於分析「access_log」的「cron作業」(如果您計算同一域中的服務器的鏈接)
  4. 添加PHP代碼以在每個頁面生成時更新數據庫。

但我認爲第一個JavaScript方法是最好的。

  1. 添加鏈接類窺探
  2. 添加「事件處理程序」來創建一個AJAX發佈
  3. 創建一個簡單的PHP腳本來更新數據庫。

阿卡

+0

通過在javascript方法中執行它,它可以在源代碼中查看,並且可以由一些用戶操作對嗎? – 2011-03-07 15:34:34

+0

@Scorpion可以,是的。如果這僅僅是爲了查明人們從某些頁面出發的位置,我不會擔心這一點。另一方面,如果這是非常重要的事情(例如廣告點擊跟蹤付款),那麼我需要更強大的功能。 – 2011-03-07 15:38:09

+0

確實!但取決於你的腳本:如果你縮小了腳本,則很難使用。 – Akarun 2011-03-07 15:38:58

1

如果從像一個CMS,而不是通過手工的來源產生:你的鏈接,你可以在鏈路ID傳遞到您的網址,並在該環節都有翻頁次數遞增的負載被點擊。這樣做需要你重新加載(沒有鏈接ID)該步驟後的頁面,以確保複製鏈接的人不會不必要地增加計數器。

如果您的用戶已啓用javascript,但此方法是無懈可擊的,但如果您的用戶確實已啓用javascript,則仍然可以執行上述方法並通過客戶端層繞過整個事件並通過AJAX發送。

這可能看起來像冗餘,但通過這種方式,您可以加速大部分訪問者的流程(無需重定向,因爲您通過AJAX進行重定向),並且在JavaScript不起作用或被禁用的情況下,您有一個失敗的證據制度,避免遺漏任何點擊

0

做吧谷歌做它的方式:

<a href="http://www.vacationhomes.com/" onmousedown="return clk(this.href,'','','','2','','0CE4Q0gIoAzAB')">Waterfront Rentals</a> 

JavaScript函數。通過的代碼有助於安全。

其實在看谷歌來源,他們與URL加載圖像作爲參數

window.clk=function(e,b,a,k,i,c,j) 
{ 
    if(document.images) { 
     b=encodeURIComponent||escape;a=new Image;var f=window.google.cri++;window.google.crm[f]=a;a.onerror=a.onload=a.onabort=function() { 
      delete window.google.crm[f] 
     }; 
     var d,g,h;if(google.v6) { 
      d=google.v6.src;g=google.v6.complete||google.v6s?2:1;h=(new Date).getTime()-google.v6t;delete google.v6 
     }if(c&&c.substring(0,6)!="&sig2=")c="&sig2="+c;a.src=["/url?sa=T&source=",google.sn,"&cd=",b(i),google.j&&google.j.pf?"&sqi=2":"","&ved=",b(j),e?"&url="+b(e.replace(/#.*/, 
      "")).replace(/\+/g,"%2B"):"","&ei=",google.kEI,d?"&v6u="+b(d)+"&v6s="+g+"&v6t="+h:"",c].join("") 
    } 
    return true 
}; 
1

大廈斷@ Akarun的答案,這裏是示例代碼(jQuery的)添加一個「聽衆」到鏈接點擊「間諜」類。請注意,我加載圖片而不是嘗試$.post或其他AJAX事件 - 這是因爲在用戶導航離開頁面(在大多數情況下點擊鏈接必須執行)時,這些內容不會完成,而瀏覽器將及時地發出對圖像的請求。它仍然是一個普通的PHP腳本,瀏覽器只是認爲它正在加載圖像。

$(document).ready(function() { 
    $('a.spy').mousedown(function(event) { 
     var page_url = "<?=$_SERVER['PHP_SELF']?>"; 
     var target_url = $(this).attr('href'); 
     if(target_url != "#" && target_url != "javascript:void(0);") 
      new Image().src= "/welcome/track_link/?page_url=" + escape(page_url) + "&target_url=" + escape(target_url); 
     return true; 
    }); 
}); 
0

您是否想過移動用戶和其他設備? 我相信你的第一個實施是完全充分和安全的。 您可以完全控制計數,並且不存在用戶操作問題。 它的工作原理也是如此。

畢竟,ajax只會在counter.php中做同樣的事情;閱讀並更新數據庫。留在你目前的實施。