- ベストアンサー
ブラウザの「戻る」でも有効なカウントダウン|PHPで取得した時間を使ってリアルタイムに秒が減っていくプログラム
- PHPで取得した時間を使ってリアルタイムにカウントダウンするプログラムについて質問です。
- ページを移動した後、ブラウザの「戻る」でページに戻ってきた際に、正しい秒数を表示し直す方法を教えてください。
- また、カウントダウンが0秒を切った場合、ページを自動的にリロードする方法も教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
クッキーあるいはセッション使ってはいかがですか? クッキーの場合 開始ミリ秒をクッキーに保存しておく。 セッションの場合、 1、開始時に非同期でサーバにカウントダウン開始の合図を送る。 2、サーバ側、セッションにカウントダウン開始時の時刻をセッションに保存(更新ボタン連打に対応する必要有) 1の前に、カウントダウンが行われているかをサーバに確認する処理が必要ですね。
その他の回答 (3)
- t_netbug
- ベストアンサー率34% (15/44)
補足ありがとうございます。 推察の通りです。 実際にcookieでやるとなると、cookieで削除された時の事や改竄された時の事を考える必要がある為、実際にはsession等の中に開始ミリ秒を入れ、その時刻からの基準で行うのが一般的だと思います。
お礼
お礼が遅くなり申し訳ありません。 sessionの仕方を学んで、本件無事解決致しました。 皆さんご協力ありがとうございました。
- babu_baboo
- ベストアンサー率51% (268/525)
<div id="countdown">time</div> <script type="text/javascript"> var count = parseInt( location.hash.substring(1) ) || 45;//45をdate('s'); var e = document.getElementById( 'countdown' ); window.onbeforeunload = function ( ) { location.hash = count + '' }; setInterval( function( ) { e.innerHTML = count+''; if( !( count -= 1 ) ) { ;/*どこかへ*/ } }, 1000); </script> とぶとり、あとをのこして・・ ごみかなぁ~
補足
ご回答ありがとうございます。 こちら、使ってみたのですが、当初の問題と一緒で、何もしなければ きちんと指定通りにリロードされますが、一度ページを遷移するとカウントダウンは 止まってしまい、しかもリロードが掛かると、戻った時の残り秒からのカウントダウンが スタートし、例えば残り1秒の時にページを遷移して、何秒か経って戻ると 1→リロード→1→リロード・・・とループしてしまいました…。
- askaaska
- ベストアンサー率35% (1455/4149)
ページを遷移してもカウントダウンが消えないようにすればいいのよ。 たとえば別ウィンドウで表示しておいて。 そうすればどんなにページ遷移しようと カウントダウンし続けるでしょ?
補足
説明が足らず申し訳ありません。 今回は新規ウインドウ以外の方法でお願い致します。
補足
ご回答ありがとうございます。 クッキーに保存、これは開始ミリ秒を基準に時間を取得しているから、ページを遷移しても 狂わない、という事でしょうか?であれば是非その方法で運用してみたいです。