2011-03-25 61 views
1

我正在一個網站上進行大量外部鏈接。所有的鏈接都在經歷稱爲PHP文件:out.php每30秒只有一個傳出鏈接

所以,普通的外部鏈接會是這樣的:out.php URL = HTTP://www.google.com

我的問題是如何阻止人們一次點擊多個鏈接?例如,我希望他們僅在30秒內點擊一個鏈接。如果他們點擊另一個鏈接,則應該出現一個錯誤,告訴他們等待幾秒鐘,然後才能訪問另一個頁面。

使用Cookie不是一個選項,因爲他們仍然可以禁用cookie。

在此先感謝您的幫助!

+1

本網站的用戶在點擊鏈接之前必須先登錄嗎? – 2011-03-25 20:13:00

+0

我編輯我的答案,幫助你在那裏 – Neal 2011-03-25 20:14:48

+0

@Tim Cooper:不一定。 @Neal:謝謝你的回答,我會檢查出來的。 – moonwalker 2011-03-25 20:18:58

回答

2

保存被點擊的地方(文件,數據庫,...)和上次點擊時的時間戳。然後,對於每次點擊檢查給定url的時間戳(如果存在)。如果在30秒內窗口忽略請求,否則使用請求並更新時間戳字段。如果你需要爲每個用戶分開它,保存IP(或者如果你有用戶名),也是如此。

+0

需要登錄才能工作,IP地址不會,正如我在Neal的回答中所述 – Gareth 2011-03-25 20:18:10

+0

好!非常感謝! – moonwalker 2011-03-25 20:21:59

+1

@Gareth: 我知道這一點。用戶可以獲得訪問網站的積分,這就是爲什麼我希望他們只能點擊他們感興趣的網站。而且如果您登錄,您只能獲得積分。因此,未登錄的用戶可能會點擊他們想要的數量。 謝謝大家的幫助! – moonwalker 2011-03-25 20:23:28

0

你可以說,你需要爲了cookies來查看網站
您可以使用會話cookie:
如果他們查看頁面答:

if(!isset($_SESSION['A'])) 
     $_SESSION['A'] = time(); 
    else { 
     if((time() - $_SESSION['A']) <= 30000){ 
      $_SESSION['A'] = time(); 
      die('YOU JUST WERE HERE 30 SECONDS AGO! TRY AGAIN LATER!'); 
     } 
    } 
    $_SESSION['A'] = time(); 

或者類似的東西,上面的代碼是不完美

+0

這可能是因爲音調而下降的,但它非常準確。您無法回覆IP地址來唯一標識用戶,因爲IP地址可能覆蓋整個公司或全部3G互聯網用戶。任何其他識別信息都可能被欺騙或清除。這一切都取決於你真正在意多少系統可以被遊戲 – Gareth 2011-03-25 20:15:28

+0

@Gareth,改變了一下語氣^ _^ – Neal 2011-03-25 20:16:08

+0

仍然不知道爲什麼這仍然被拒絕..這是一個'正確'的答案 – Neal 2011-03-25 20:25:03