1

私のウェブサイトでは、人々はページを見ることでポイントを獲得します。彼らはページを開いたままにしておくと毎秒1ポイントを獲得します(ページは広告を回転させ続けます)。

そのページを一度に複数回開くことでこれを悪用し始めたため、より多くのポイントを獲得している人もいます。たとえば、ユーザーがページを10回開くと、1秒あたり10ポイントを獲得します。私は彼らに毎秒1ポイント以上稼がせたくありません。

ユーザーがそのページを同時に複数回開かないようにするにはどうすればよいですか?

前もって感謝します。注:私のウェブサイトはphpベースです。

4

3 に答える 3

0

ページが開かれた時刻をデータベースに追加します。ページが開かれるたびに、その時間と現在の時間の差が xx 秒未満であるかどうかを確認し、ユーザーをリダイレクトします。差が xx 秒を超える場合は、その時間を更新します。

于 2013-03-22T09:19:05.550 に答える
0

私は簡単ですが信頼できない方法を念頭に置いています:

次のように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.
}

この変数の設定を解除するには、ページを閉じるときにこの変数の設定を解除する AJAX スクリプトを起動できます。unsetonpage.ajax.phpはのようになります。

<?php $_SESSION['user_already_on_page'] = false;?>

そしてあなたの JS-Part (jquery を使用):

$(window).bind('beforeunload', function(eventObject) {
    $.ajax({url:'./ajax/unsetonpage.ajax.php',type:'GET'});
});

これはうまくいくはずです。

于 2013-03-22T08:26:06.607 に答える
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 に答える