知道用户在我的网站上的实时性



我有一个网站,我必须(使用PHP和/或JavaScript)在访问者进入网站两分钟后触发一条警报消息。我已经搜索过了,但我找到的所有解决方案都是针对一个独特的页面。我需要计时器在用户进入我的网站时启动,无论是通过哪个页面。当用户浏览我的网站页面时,我需要这个计数器不断计数。

一种解决方案可以是使用会话变量。我可以制作一个脚本来查找这个变量,如果它不存在,则意味着用户正在进入网站。然后我用当前时间设置这个变量。它在每个页面中的脚本,它将每x秒通过AJAX读取一次这个变量,两分钟后我就会知道用户何时在我的网站上。

我不知道它是否正确(我还没有实现),但我不太确定会话是否是最好的方式。如果用户离开页面,但打开了其他导航窗口,则会话不会过期,如果他再次进入网站,则计数器不会重置。

因此,有两个问题:

  1. 有更好的方法吗对真实进入的更多控制然后退出
  2. 如果不是,是我的上级方法对吗

谢谢。

这样的东西应该可以工作。

$alert_message = false;
if(!isset($_SESSION['time_entered'])){
    $_SESSION['time_entered'] = time();
}
if($_SESSION['time_entered'] =< time() - 120){
    if(!isset($_SESSION['message_sent'])){
        $alert_message = true;
        $_SESSION['message_sent'] = true;
    }
}

并且在<head>:中

<?php if($alert_message):?>
<script type="text/javascript">alert("You've been here for at least two minutes.");</script>
<?php endif;?>

还要确保在每个脚本的顶部都有session_start()

您不需要AJAX,只需要将时间存储在会话变量中,然后在每个页面上包含一些JavaScript,下面是一个示例:

<?php
session_start();
$time = microtime(true);
if (!$_SESSION['foo']) {
    $_SESSION['foo'] = (microtime(true)+120);
}
?>
<script type="text/javascript">
    var timeoutID = setTimeout(function() {
        alert('two minutes have passed');
    }, <?php echo bcsub($_SESSION['foo'], $time)*1000 ?>);
</script>

你需要一些额外的逻辑,这样它就不会在120秒后继续发射。

最新更新