2012-02-10 14 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

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); 
}); 
関連する問題