在我的網站上,用戶通過查看頁面可以獲得積分。他們每秒得到1分他們保持打開頁面(頁面不斷旋轉廣告)。如何防止用戶每次多次打開同一頁面
有些人已經開始通過多次打開該頁面一起利用這一點,因此都賺更多的積分!例如,如果用戶打開該頁面10次,則他每秒獲得10分。我不希望他們每秒賺取超過1分。
我怎樣才能防止用戶打開該頁面不止一次在同一時間?
在此先感謝。 注:我的網站是基於php的。
在我的網站上,用戶通過查看頁面可以獲得積分。他們每秒得到1分他們保持打開頁面(頁面不斷旋轉廣告)。如何防止用戶每次多次打開同一頁面
有些人已經開始通過多次打開該頁面一起利用這一點,因此都賺更多的積分!例如,如果用戶打開該頁面10次,則他每秒獲得10分。我不希望他們每秒賺取超過1分。
我怎樣才能防止用戶打開該頁面不止一次在同一時間?
在此先感謝。 注:我的網站是基於php的。
添加頁面打開到數據庫的時間。無論何時打開頁面,檢查是否存在時間和當前時間的差異小於xx秒,然後重定向用戶。如果差異超過xx秒,則更新該時間。
但是這也可以被利用!他們只需要等待幾分鐘/秒。如果用戶打開該頁面,直接關閉並再次打開該頁面會發生什麼情況。他也會被重定向..?! – 2013-03-22 09:24:41
@BenediktMokroß - 每次用戶獲得積分時,都會更新時間,即使他們在幾分鐘後重新打開,他們也會被捕獲。如果用戶在關閉後再次打開它,那麼他也將被重定向,並且在重定向的頁面上它將被寫入發生了什麼,並且在特定時間之後用戶將自動被重定向到較早的頁面。 – Max 2013-03-23 06:36:00
我對很容易,但沒有可靠的方法記:
設置一個Sessionvar像
$_SESSION['user_already_on_page'] = true;
現在你可以檢查這個變量,並返回一個錯誤頁面或類似的東西。
if($_SESSION['user_already_on_page'])
{
//maybe the user has left unexpected. to workaround this we have to check
//for the last db entry. Examplecode:
$query = mysql_query($_db,'SELECT LastUpdated FROM Pointstable WHERE U_Id = $uid');
$row = mysql_fetch_array($query);
if((time()-$row['LastUpdated']) < 5)
{
die("You are already on this page!");
}
//$_SESSION['user_already_on_page'] is set but the last update is older than 5 sec
//it seems, that he unexpectedly lost connection or something like that.
}
要取消設置此變量,您可以在pageclose上觸發一個AJAX腳本來取消設置此變量。 所以你unsetonpage.ajax.php看起來是這樣的:
<?php $_SESSION['user_already_on_page'] = false;?>
而且你的JS-部分(使用jQuery):
$(window).bind('beforeunload', function(eventObject) {
$.ajax({url:'./ajax/unsetonpage.ajax.php',type:'GET'});
});
這應該工作。
如果用戶突然退出,例如他的互聯網斷開連接,那麼他是否能夠再次打開該頁面? – Max 2013-03-22 08:35:22
@Max不幸的不是。但是,您可以通過檢查最後一個DB-Entry來解決這個問題。就像'if($ _ SESSION ['user_already_on_page']){檢查最後一個輸入是否超過XX秒}「。如果最後一項比xx秒早,則用戶可以繼續訪問該站點。 – 2013-03-22 08:48:11
我添加了頁面打開到數據庫的時間。如果時間和當前時間之間的差異小於xx秒,那麼我重定向用戶。我的問題已經修復:) – Max 2013-03-22 09:16:58
我有任何登錄機制?如果允許用戶登錄,則只需登錄一次,即可在用戶登錄時通過向數據庫添加信息並添加信息。 – Damian0o 2013-03-22 08:10:48
您可以爲每個頁面的用戶設置cookie或變量。並在每個頁面中檢查該變量。如果設置重定向他或做你想做的。如果不是,請打開頁面! – 2013-03-22 08:11:03
你不能阻止他們多次打開同一頁面,但你可以防止他們獲得多個點。你現在的積分系統是如何工作的? – deceze 2013-03-22 08:11:16