在我的网站上,人们通过查看页面获得积分。他们保持页面打开每秒得到1分(页面不断旋转广告)。
有些人已经开始多次打开这个页面,因此获得了更多积分!例如,如果用户打开页面10次,那么他每秒获得10分。我不希望他们每秒收入超过1点。
如何阻止用户同时多次打开该网页?
提前致谢。 注意:我的网站是基于PHP的。
答案 0 :(得分: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.
}
要取消设置此变量,您可以在取消设置此变量的pageclose上触发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'});
});
这应该有用。
答案 1 :(得分:0)
添加页面打开到数据库的时间。每当页面打开时,检查时间和当前时间的差异是否小于xx秒,然后重定向用户。如果差异超过xx秒,则更新该时间。
答案 2 :(得分: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']);
}