4分钟后出现横幅

时间:2012-02-10 09:21:50

标签: php javascript ajax

我创建了一个横幅,我想让它在4分钟后出现。 我使用modalbox来显示横幅。

我需要类似的东西

If customers_session_time > 4 minutes then show me the banner

但是如果我将customers_session_time存储到数据库并在PHP上编写一些代码,那么用户将不得不刷新页面以查看横幅。

如果我使用javascript的setTimeout(),每次用户刷新页面时都会刷新你的超时时间......

还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

记住用户在会话中请求您的网站时的时间戳 每次用户进入网站时,您将检查他是第一次来这里还是他最近来的时间。然后计算会话中已经在网站上花费的时间。

var timeSpentOnSites = (1000*60*4) - <?= $_SESSION['TIME_SPENT_ALREADY'] ?>;
$(document).ready(function(){
  setTimeout(function(){
    $('#banner').show();
  },timeSpentOnSites < 0 ? 0 : timeSpentOnSites);
});

答案 1 :(得分:2)

不是一个非常完整的代码,但你可能会有一个想法

<?php
session_start();

if( empty($_SESSION['time_session_started']) ){
    $_SESSION['time_session_started'] = time();
}

$timeout = $_SESSION['time_session_started']+4*60 - time();

if( $timeout<0 ){
    $timeout = 0;
}
?>
<script language="JavaScript">
<?php if( $timeout ){ ?>
setTimeout(function (){
    showBanner();
},<?php echo $timeout*1000; ?>);
<?php }else{ ?>
showBanner();
<?php }
</script>

答案 2 :(得分:0)

您无法访问JavaScript中的任何会话,因为它是客户端的 您可以做的是,在成功加载DOM之后,您可以使用setTimeout();方法并在4分钟后显示横幅。

$(document).ready(function(){

setTimeout(function(){
    $('#banner').show();
},(1000*60*4));

});

编辑:我在发布答案后编辑了问题。答案回答了第一个问号。