2012-02-10 4 views
0

4 분 후에 배너를 만들었습니다. modalbox를 사용하여 배너를 표시합니다.4 분 후에 배너가 표시됩니다.

내가 그

If customers_session_time > 4 minutes then show me the banner 

같은 뭔가가 필요하지만 데이터베이스에 customers_session_time 저장하고 PHP에 대한 몇 가지 코드를 작성할 경우, 사용자가 배너를 볼 수있는 페이지를 새로 고침해야합니다.

내가 자바 스크립트의에서는 setTimeout()는 네 시간 초과 기간은 사용자가 페이지를 새로 고침 할 때마다 새로 고쳐집니다 사용하는 경우 ...

다른 방법이 있습니까?

답변

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

자바 스크립트의 세션은 클라이언트 쪽이므로 액세스 할 수 없습니다.
DOM을 성공적으로로드 한 후 setTimeout(); 메서드를 사용하고 4 분 후에 배너를 표시 할 수 있습니다.

$(document).ready(function(){ 

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

}); 

편집 : 답변을 게시 한 후 질문이 수정되었습니다. 대답은 첫 번째 질문 마크 업에 응답합니다.

+0

당신은 세션에 관련된 서버 측의 페이지 구조에 배치 뭔가에 액세스 할 수 있습니다를 잡을 수 있습니다. 두 세계의 최고. –

+0

볼 수 있습니다.하지만 사용자가 페이지를 새로 고침하면 setTimeout이 처음부터 계산을 시작합니까? – Nikitas

+0

확실합니다! 난 단지 자바 스크립트와 jquery에 대한 지원을 할 수 있도록 PHP로 아니에요! –

2

사용자가 세션에서 귀하의 사이트를 요청할 때의 타임 스탬프를 기억하십시오.
사용자가 사이트에 입장 할 때마다 처음 방문했는지, 언제 최신 방문했는지 확인합니다. 그런 다음 세션의 사이트에서 이미 소비 한 시간을 계산합니다.

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