php验证用户是否在线_php – 如何检测用户何时不在线?

好吧,我有一个PHP编码的管理仪表板.

现在我想知道我的ONLINE用户.为此我在数据库中创建了一个名为“ONLINE”的表.当访问者/用户访问我的网站时,其IP保存在我的数据库和在仪表板上,向我显示1位用户在线.

问题从这里开始.我希望当访问者/用户离开我的网站时(关闭网站,关闭标签和整个浏览器).这保存了用户的IP(在ONLINE表中),迁移或转移到名为“VISITORS”的数据库中的另一个表.

解决方法:

检测用户出口有点模糊.您可以使用javascript向服务器发送退出通知,例如:

window.onbeforeunload = function() {

... insert your ajax code here ...

}

虽然有很多条件不会触发,但更好的方法是使用签入代码.您可以创建一个插入/更新ONLINE表的PHP脚本(假设您的表上的IP字段设置为UNIQUE或PRIMARY键,还要求您在表上创建TIMESTAMP字段 – 我将其命名为last_check_in):

... connect to database ...

$statement = $db->prepare("INSERT INTO `ONLINE` SET `IP` = ?, `last_check_in` = NOW() ON DUPLICATE KEY UPDATE `last_check_in` = NOW()");

$statement->execute([$_SERVER['REMOTE_ADDR']]);

然后你可以在一个计时器上放一个ajax调用(这里是jquery的ajax页面:http://api.jquery.com/jquery.ajax/,你可以在你的回调中使用setTimeout来安排下一次更新)来检查页面.

然后,您可以更改显示在线用户的查询,以便仅显示最近签入的用户:

WHERE AND `last_checkin` > NOW() - INTERVAL 1 MINUTE

这实际上允许您只使用一个表而不是两个表,但是如果您设置使用两个表,则可以编写另一个脚本来移动未签入的用户并将其放在cron计时器上.

标签:php,mysql,tracking

来源: https://codeday.me/bug/20190623/1273342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值