Php 横幅将在4分钟后出现

Php 横幅将在4分钟后出现,php,javascript,ajax,Php,Javascript,Ajax,我创建了一个横幅,我希望它在4分钟后出现。 我使用modalbox显示横幅 我需要那样的东西 If customers_session_time > 4 minutes then show me the banner 但是如果我将客户的会话时间存储到数据库中,并在PHP上编写一些代码,那么用户必须刷新页面才能看到横幅 如果我使用javascript的setTimeout(),则每次用户刷新页面时都会刷新超时时间 还有其他方法吗?您无法访问JavaScript中的任何会话,因为它是客户端会

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

我需要那样的东西

If customers_session_time > 4 minutes then show me the banner
但是如果我将客户的会话时间存储到数据库中,并在PHP上编写一些代码,那么用户必须刷新页面才能看到横幅

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


还有其他方法吗?

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

$(document).ready(function(){

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

});

编辑:这个问题是在我发布答案后编辑的。答案回应了第一个问题标记。

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

$(document).ready(function(){

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

});

编辑:这个问题是在我发布答案后编辑的。答案回应了第一个问题标记。

记住用户在会话中请求站点时的时间戳。
每次用户进入网站时,你都会检查他是否是第一次来这里,或者他最近是什么时候来的。然后计算会话中已在站点上花费的时间

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

记住用户在会话中请求站点时的时间戳。
每次用户进入网站时,你都会检查他是否是第一次来这里,或者他最近是什么时候来的。然后计算会话中已在站点上花费的时间

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

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

<?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>

setTimeout(函数(){
showBanner();
},);
showBanner();

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

<?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>

setTimeout(函数(){
showBanner();
},);
showBanner();

您可以访问与会话相关的服务器端页面结构中的内容。两全其美。我明白了。。但是如果用户刷新页面,setTimeout将从开始计数?当然!我不喜欢php,所以我只能支持javascript和jquery!您可以访问与会话相关的服务器端页面结构中的内容。两全其美。我明白了。。但是如果用户刷新页面,setTimeout将从开始计数?当然!我不喜欢php,所以我只能支持javascript和jquery!