知道用户在我的网站中的实时时间

时间:2011-06-01 11:18:43

标签: php javascript jquery session

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

一种解决方案可能是使用会话变量。我可以创建一个查找此变量的脚本,如果它不存在则表示用户正在进入该站点。然后我用当前时间设置这个变量。它在每个页面中的脚本,它将每隔x秒通过AJAX读取此变量,我知道用户何时在我的网站上两分钟。

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

所以,有两个问题:

  1. 有没有更好的方法 更多地控制真正的进入 退出?
  2. 如果没有,是我的上述 接近吧?
  3. 感谢。

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效。

$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()

答案 1 :(得分:1)

您不需要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秒后不会继续发射。