2012-02-10 2 views
0

Я создал баннер, который я хочу, чтобы он появился через 4 минуты. Я использую modalbox для показа баннера.Баннер появится через 4 минуты

мне нужно что-то вроде этого

If customers_session_time > 4 minutes then show me the banner 

Но если я хранить customers_session_time в базу данных и написать код на PHP, то пользователю придется обновить страницу, чтобы увидеть баннер.

Если я использую SetTimeout) период тайм-аута твой в JavaScript (будет обновляться каждый раз, когда пользователь обновляет страницу ...

Есть ли другой способ?

ответ

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

Доступ к сеансам в JavaScript невозможен, так как он является сторонним пользователем.
Что вы можете сделать, так это то, что ПОСЛЕ DOM было успешно загружено, вы можете использовать метод setTimeout(); и показывать баннер через 4 минуты.

$(document).ready(function(){ 

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

}); 

EDIT: вопрос был отредактирован после того, как я опубликовал ответ. Ответ отвечает на первую разметку вопроса.

+0

Вы можете получить доступ к что-то помещается в структуре страницы на стороне сервера, связанную с сессией. Лучшее обоих миров. –

+0

Я вижу .. Но если пользователь обновит страницу, setTimeout начнет отсчет с самого начала? – Nikitas

+0

уверен, что он делает! Я не в php, поэтому могу только поддерживать javascript и jquery! –

2

Вспомните временную метку, когда пользователь запрашивает ваш сайт в сеансе.
Каждый раз, когда пользователь входит на сайт, вы будете проверять, находится ли он здесь в первый раз или когда он пришел последним. Затем вычислите время, проведенное уже на сайте в сеансе.

var timeSpentOnSites = (1000*60*4) - <?= $_SESSION['TIME_SPENT_ALREADY'] ?>; 
$(document).ready(function(){ 
    setTimeout(function(){ 
    $('#banner').show(); 
    },timeSpentOnSites < 0 ? 0 : timeSpentOnSites); 
}); 
Смежные вопросы