我正在开发一个脚本,它会在36小时没有活动后暂停用户。
以下代码是我提出的。我知道它可能不起作用,但我被卡住了。我需要帮助。我正在使用PHP和MYSQL。
$n = "SELECT * FROM tb_ph WHERE username ='$user'
AND status ='sukses' ORDER BY id LIMIT 1";
$regi = mysql_query($n);
$regr = mysql_fetch_array($regi);
$verify = time($regr["verify"]);
$username = $regr["username"];
$check = $verify + 1;
$now = time();
if($check < $now){
mysql_query("UPDATE tb_users SET suspend='1' WHERE username='$username'");
}
答案 0 :(得分:0)
如果我理解用户处于非活动状态你必须使用javascript,如果它只是处于非活动状态以捕获事件尝试这个如果没有动作aj ajax暂停用户,你不能使用php这个原因它只是运行时页面加载您可以使用javascript事件系统。 BROKEN DOWN:我创建了var time并存储了newdate和gettime。然后我把一个绑定键,如果没有活动意义,如果没有做任何事情,如移动鼠标按下一个键,你可以搜索更多的事件,然后激发ajax删除它们所以可能你使用cookie或可能会话来知道哪个用户删除。请它是否可以投票
<script>
var time = new Date().getTime();
$(document.body).bind("mousemove keypress", function(e) {
time = new Date().getTime();
});
function refresh() {
if(new Date().getTime() - time >= 129600)
//delete user with ajax
$.ajax({
type: "POST",
url: "//your url",
data: {id: id}, //maybe from cookie or session
cache: false,
success: function(r){
//callback if you wish
}
});
else
setTimeout(refresh, 10000);
}
setTimeout(refresh, 10000);
</script
答案 1 :(得分:0)
您可以在此处使用两种方法:
1)使用一个cronjob,每小时检查一次数据库(或每隔10分钟......如果你不介意开销,你甚至可以每分钟做一次)。您只需要检查仍然将活动标志设置为1的帐户。如果时间大于36小时,则将活动标志设置为0.
2)根据您的应用程序,您甚至可能不想担心活动标记。相反,当您的用户下次尝试登录时,您可以检查他们上次活动的时间。如果它超过36小时前,那么只是拒绝他们访问。在这种情况下,您不需要在数据库中使用活动标志,因为时间戳符合您的目的。