2016-09-01 2 views
0

私はPHPで構築されたカウントダウンタイマーに取り組んでいます。私は、カウントダウンタイマーがゼロになった後に「EXPIRED」と表示されるメッセージを追加する方法を理解しようとしています。誰もがカウントダウンタイマーにこの機能を追加すると私を助けることができますか?私はJavaScriptでPHPでカウントダウンタイマーがゼロになったときにメッセージを表示する方法は?

<?php 

date_default_timezone_set('Australia/ACT'); 
include 'GIFEncoder.class.php'; 

$time = $_GET['time']; 
$future_date = new DateTime(date('r',strtotime($time))); 
$time_now = time(); 
$now = new DateTime(date('r', $time_now)); 

$frames = array(); 
$delays = array(); 

$image = imagecreatefrompng('countdown.png'); 
$delay = 100; // milliseconds 
$font = array(
    'size'=>73, 
    'angle'=>0, 
    'x-offset'=>10, 
    'y-offset'=>70, 
    'file'=>'Transist.ttf', 
    'color'=>imagecolorallocate($image, 243, 139, 0), 
    'color2'=>imagecolorallocate($image, 217, 0, 0), 
); 
for($i = 0; $i <= 60; $i++){ 
    $interval = date_diff($future_date, $now); 
    if($future_date < $now){ 
     // Open the first source image and add the text. 
     $image = imagecreatefrompng('countdown.png');; 
     $text = $interval->format('00:00:00:00'); 
     imagettftext ($image , $font['size'] , $font['angle'] , $font['x-offset'] , $font['y-offset'] , $font['color'] , $font['file'], $text); 
     ob_start(); 
     imagegif($image); 
     $frames[]=ob_get_contents(); 
     $delays[]=$delay; 
      $loops = 1; 
     ob_end_clean(); 
     break; 
    } else { 
     // Open the first source image and add the text. 
     $image = imagecreatefrompng('countdown.png');; 
     $text = $interval->format('%a:%H:%I:%S'); 
     // %a is weird in that it doesn’t give you a two digit number 
     // check if it starts with a single digit 0-9 
     // and prepend a 0 if it does 
     if(preg_match('/^[0-9]\:/', $text)){ 
     $text = '0'.$text; 
     } 
     imagettftext ($image , $font['size'] , $font['angle'] , $font['x-offset'] , $font['y-offset'] , $font['color'] , $font['file'], $text); 
     ob_start(); 
     imagegif($image); 
     $frames[]=ob_get_contents(); 
     $delays[]=$delay; 
      $loops = 0; 
     ob_end_clean(); 
     } 
    $now->modify('+1 second'); 
} 

//expire this image instantly 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', false); 
header('Pragma: no-cache'); 
$gif = new AnimatedGif($frames,$delays,$loops); 
$gif->display();` 
+0

PHPは非同期ではありませんが、これは接続をガムアップするだけです。有効期限が切れたときにタイムスタンプを取得するためにカウントダウンとphpを表示するには、JavaScriptを活用することを考えてください。 – Blake

+0

javascript setInterval関数を見てください。 – RGriffiths

+0

フィードバックBlake&RGriffithsに感謝します!しかし、私は電子メールキャンペーンにこのカウントダウンタイマーを使用しています.Javascriptは、受信トレイにヒットした後、特にGmailの場合は削除されます。 –

答えて

0

setInterval機能below.`コードをリストアップしました:

<script> 
    setInterval(function() { 
     .... do something every 1000 milliseconds .... 
    }, 1000); 
</script> 

あなたはそれがあなたのタイマーを更新するために...それはあなたが望んでいるものであれば得ることができます。あなたが望むように1000を何かより遅く/速く変えてください。

+0

私は最後のコメントで言及したように、私は電子メールキャンペーンから取り除かれるので、私はJavaScriptを使用することはできません。これはPHP関数でなければなりません。私はいくつかの例に遭遇しましたが、それは私が探しているものではありません。 –

+0

しかし、もしあなたがphpで電子メールを構築しているのであれば、電子メールが送られたらphpはもう関係しません。 – RGriffiths

+0

あなたの正しい!しかし、これは私がそれを構築するために従ったチュートリアルですhttps://litmus.com/community/learning/27-how-to-add-a-countdown-timer-to-your-email 私はあなたが私はタイマーが0に達した後にメッセージポップアップを作るために何を使うのかを教えてください。 –

関連する問題