我希望每个用户每分钟都能获得1个点数。现在我有一个addpoints.php的php代码,我尝试使用jQuery javascript进行操作:
这个方法很有效,每1分钟会获得一个点数。但是有一个问题,如果你只是刷新了脚本所在的页面,你也会获得一个点数。因此,你可以多次刷新页面来提高你的点数。
我想,可以在addpoints.php中添加一个if()语句,检查上一次时间戳是否超过1分钟,如果是则发放点数,否则报错。
我只是想知道是否有更好的方法来解决这个小问题?
function addpoints() {
var userid = document.getElementById('user_id_points');
var postFile = 'addpoints.php?userid='+ userid.value;
$.post(postFile, function(data){
$("#points").html(data);
setTimeout(addpoints, 60000);
});
}
这个方法很有效,每1分钟会获得一个点数。但是有一个问题,如果你只是刷新了脚本所在的页面,你也会获得一个点数。因此,你可以多次刷新页面来提高你的点数。
我想,可以在addpoints.php中添加一个if()语句,检查上一次时间戳是否超过1分钟,如果是则发放点数,否则报错。
我只是想知道是否有更好的方法来解决这个小问题?
<
或>
这样的比较,而不是==
:如果查询在61秒后到达,则应考虑;我可能会将条件放在update
查询中;伪代码:update your_table set points = points+1, timestamp=$current_time where user_id=X and timestamp<=$current_time-60
;否则,从您提议的内容开始,我认为这可能没问题:if ($row['last_time'] + 60 <= time()) {insert}
。 - Pascal MARTINmysql_query
运行实际查询,然后调用mysql_affected_rows
,不需要传递任何参数: 它将在最后一个运行的查询上工作 - 请参阅mysql_affected_rows
手册页面上的示例:其中有一个是带有update
查询的。 - Pascal MARTIN