1

在我的网站上,人们通过查看页面来赚取积分。他们保持页面打开的每一秒(页面不断旋转广告)获得 1 分。

有些人已经开始通过多次打开该页面来利用这一点,因此获得了更多积分!例如,如果用户打开页面 10 次,那么他每秒获得 10 分。我不希望他们每秒赚取超过 1 分。

如何防止用户同时打开该页面多次?

提前致谢。注意:我的网站是基于 php 的。

4

3 回答 3

0

我想到了简单但不可靠的方式:

设置一个像

$_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'});
});

这应该有效。

于 2013-03-22T08:26:06.607 回答
0

将页面打开的时间添加到数据库中。每当打开页面时,检查该时间和当前时间的黑白差异是否小于 xx 秒,然后重定向用户。如果差异超过 xx 秒,则更新该时间。

于 2013-03-22T09:19:05.550 回答
0
//--- You make session in startup called (my_form)
if (!empty($_SESSION['my_form'])) 
{
    if ($_SESSION['my_form']== basename($_SERVER['PHP_SELF']))
    {
        header("Location:index.php");
        exit();
    } else {
        $_SESSION['my_form']= basename($_SERVER['PHP_SELF']);
    }
} else {
    $_SESSION['my_form']= basename($_SERVER['PHP_SELF']);
}
于 2019-12-12T15:36:42.940 回答