我有一个网站,我必须实现(使用PHP和/或JavaScript)在访问者进入网站两分钟后触发的警报消息。我搜索过,但我找到的所有解决方案都是针对一个独特的页面。我需要计时器计数器在用户进入我的网站时启动,无论通过哪个页面。我需要计数器在用户导航我的网站页面时保持计数。
一种解决方案可能是使用会话变量。我可以创建一个查找此变量的脚本,如果它不存在则表示用户正在进入该站点。然后我用当前时间设置这个变量。它在每个页面中的脚本,它将每隔x秒通过AJAX读取此变量,我知道用户何时在我的网站上两分钟。
我不知道它是否正确(我还没有实现),但我不确定会话是否是最佳方式。如果用户离开页面但打开了其他导航窗口,则会话不会过期,如果他再次进入该站点,则不会重置计数器。
所以,有两个问题:
感谢。
答案 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秒后不会继续发射。