- ベストアンサー
PHPで美人時計風のサイトを作る方法
- 美人時計風のサイトをPHPで作る方法を教えてください。
- 17時から18時は山の画像が1分ごとに切り替わり、18時から19時は犬の動画が流れ、19時から20時は沖縄旅行記のページが表示される美人時計風のサイトをPHPで作ることは可能でしょうか?
- 初心者の私はPHPを始めたばかりですが、このようなサイトを作ることができるなら本やネットで学びたいと思っています。この仕組みの名前やキーワードも教えていただけると嬉しいです。よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#4です。 > 再度の回答をありがとうございます。 えっと、私は#3の方とは別人です。 「(今までの流れを見て)まだいろいろと誤解があるように」と表現したつもりだったのですが、ちょっと紛らわしかったですね。ごめんなさい。 > 18:55にそのサイトにアクセス⇒そのまま5分間犬の動画を見る⇒19:00になる⇒犬の動画が表示されているページから沖縄旅行記のページに強制的に切り替わる。 PHPで実装する場合は、19:00ジャストに「沖縄旅行記のページ」にリダイレクトするように <meta> を仕込みます。 <meta> は指定時間(秒)後にページをリダイレクトさせますから、ページを読み込んだ時点で何秒後が19:00になるかをPHPに計算させればOK if(19:00だったら){ 「沖縄旅行記のページ」にリダイレクト } else if(19:00前だったら){ <meta http-equiv="refresh" content="19:00から現在時刻を引いた秒数;URL=沖縄旅行記のページ"> } JavaScriptで実装する場合は、window.setTimeout() と location.href を使って同じ動作にします。 window.setTimeout - MDC https://developer.mozilla.org/ja/DOM/window.setTimeout location.href(リンク)-JavaScript入門 http://www.pori2.net/js/location/1.html
その他の回答 (6)
- bm_hiro
- ベストアンサー率51% (200/388)
んー、俺が口を出すべきかどうか悩みましたが、本題とは逸れてしまう別のお話を。 ネットは 一般的にリクエスト&レスポンスが基本です。 ブラウザ(クライアント)からの要求(リクエスト)を、サーバーがブラウザに返して(レスポンス)、一つのターンが終了です。 PHPはサーバーサイドで動いているものですので、ブラウザなどからのリクエストがなければ、何もしません。 なので、美人時計のように時間で画像が切り替わるものは、JavaScriptを使って、毎分ごとにブラウザが自動で、サーバーにリクエストしてます。 JavaScriptはブラウザ(クライアントサイド)で動いていますので、PHPとは根本的に違う話になります。 iGoogleのガジェットの美人時計のソース見た所、時間のカウントの仕方は #5さんの書いたようなのでした。 最初にリクエストしたときの秒が例えば20秒だとしたら、40秒待機して、自動でリクエストする。みたいなもんでした。 まぁ、なんか 解決しちゃってそうな話しを、余計に混乱させてるだけかもしれませんが、余計なお世話だったらごめんなさい。 スルーしてください。
お礼
回答ありがとうございます。 JavaScriptとPHPの根本的な違いがよく分かりました。頑張って勉強します!
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#3です。 #3の補足より > 19:00で犬の動画から沖縄旅行記へ強制的に切り替えるのは > FlashやJavascriptではなくてPHPになるのでしょうか? そこが逆なんです。 強制的に切り替えるのがクライアントサイドのプログラムです。 その切り替えた結果を JavaScript で用意しても良いですし, PHP で用意しても良いですが, 仮に PHP で用意するならかなり頻繁に PHP を動作させないとならないでしょう? 1分間に1回ではプラスマイナスの誤差が30秒になりますからトータルの誤差は1分になってしまいます。 そんな誤差(一般的に「おかしい」と気付かれてしまうような誤差)を出さないようにするためには, 少なくとも1秒に1回くらいはPHPにアクセスしないとならないでしょう。 さらに1秒間に1回でも「だんだん切り替わる」などの表現は無理です。 1秒間に数回~数十回アクセスせねば「たんだん切り替わる」は無理です。 そのアクセスさせるプログラムは結局クライアントサイドなんですから, 最初から PHP にする必要はないじゃないですか。 ということです。 自分一人のためのサーバでPHPであればそのようなことも可能ですが, 仮に 1000人が同時に同じページを見ていたらどうなりますか? 一般的なサーバならフリーズしますよ。
お礼
確かにサーバがフリーズしますね(^-^; #5のお礼欄にも書いたのですが、強制的に切り替える=PHPと完全に思い込んでいたようです。よく考えたらJavaScriptだって強制的に変えてますね。やっとこさ呪縛から抜けました。頑張って勉強します。ありがとうございます!
- think49
- ベストアンサー率59% (285/482)
#3の補足を読みました。 まだいろいろと誤解があるように思います。 > 18:55から19:00をまたいでアクセスしている場合、19:00で犬の動画から沖縄旅行記へ強制的に切り替えるのはFlashや JavascriptではなくてPHPになるのでしょうか? 「またいでアクセス」の意味がよくわかりません…。 PHPはサーバで動作しますから、訪問者がサーバにHTTPリクエストして「ページを読み込む時」にしか反応できません。 例えば、「1分おきに画像を切り替える」をPHPで行うなら、1分おきにサーバにリクエストしなくてはなりませんから、 <meta http-equiv="refresh" content="60"> をHTMLに記述して、60秒周期でページを再読込みする必要があります。 逆に、JavaScriptはクライアントサイドで動作しますので、「ページを読み込み終わった後」に実行できます。 「1分おきに画像を切り替える」をJavaScriptで行うなら、window.setInterval() を利用します。 window.setInterval(function(){ // 画像を切り替える処理 }, 60000); // 60000ミリ秒周期で実行する window.setInterval - MDC https://developer.mozilla.org/ja/DOM/window.setInterval
お礼
再度の回答をありがとうございます。 「またいでアクセス」は確かに意味が分かりませんね……。読み返してみて何じゃこりゃと思いました。 18:55にそのサイトにアクセス⇒そのまま5分間犬の動画を見る⇒19:00になる⇒犬の動画が表示されているページから沖縄旅行記のページに強制的に切り替わる。 という意味です。 PHPはサーバで動く、Javascriptはクライアントで動くのは理解できました。1分ごとに山の画像を切り替えるのは、1分ごとにサーバを読み込みにいくのではなくJavascriptを使ってクライアント側で画像を変えて表示させたらどう?ということですよね。 では、上に書いたように19:00で強制的にページを切り替える場合(動画のページからテキストのページへ)はどうなんだろ?と考えたら、ブラウザをリロードさせなくてはいけないのでは?それってJavascriptでできるの?と悩みが尽きなくなってしまいました。完全に頭がこんがらがってます(^-^;
- BlurFiltan
- ベストアンサー率91% (1611/1754)
他の方も書かれていらしゃいますが ほとんどPHPの領域ではないと思います。 「アクセスした時刻の取得」はPHPでもできますし、 それによって表示させる画像などもアクセス時に変更できますが、 時刻によって「画像が切り替わって表示される。」とかは クライアントサイドの領域ですね。 一般的には JavaScript とか Flash。 クライアントの時刻は JavaScript でも Flash でも取得できますから、 結局全体的にクライアントサイドの方が簡単にことを運べます。 ガンガン(1秒間に数回から数十回)サーバサイドにアクセスするようなことは普通しませんし。 この場合サーバサイドですることと言えば データの保存(被写体の方のブログのURLの保存など)とかになりますね。 この辺↓が手っ取り早いです。 「美人時計のような分時計のムーブメント素材」 http://suzupara.iinaa.net/min_watch_movement.html
お礼
ご回答ありがとうございます。便利な素材があるんですね。研究してみます。 追加で質問して申し訳ないのですが、18:55から19:00をまたいでアクセスしている場合、19:00で犬の動画から沖縄旅行記へ強制的に切り替えるのはFlashやJavascriptではなくてPHPになるのでしょうか?
- mizutaki
- ベストアンサー率33% (111/333)
PHPが生み出すのは動的なページですが、出力されたページそのものは動的に動かせません。 1分ごとに画像を切り替えるならJavascriptやFlashが必要になります。 「画像を切り替える Javascript」 みたいに検索すると例がたくさん出てきますので、 そういうのを参考にすれば、そんなに難しくはありません。 動画に関しては、決まった動画を流すだけなら、Youtubeやニコニコに上げた物をリンクすればいいので、あまり難しくありません。 Webカメラを通してどこかを表示しようとするとサーバ側にビデオキャプチャみたいなソフトをインストールして、運営までする事があるので少し敷居が高い(本屋にいけば、初心者でも何とか出来そうな本はありますけど) ちなみに1時間事に関しては switch(date('H')){(以下略 みたいな事をやれば出来るので、 そこだけは簡単に出来ます。
お礼
回答ありがとうございます。とても分かりやすいです。 まとめると、 ・1分ごとの画像切り替えはJavascriptかFlashで、 ・1時間ごとの切り替えはswitch(date('H')){(以下略)で、 というやり方でどうだい?ってことであってますか?
- mizuki_sak
- ベストアンサー率62% (5/8)
時間をトリガー(条件)として表示したいページにリダイレクトまたは そのページをPHPからファイルとして開いてしまうというという 方法で実現できると思います。 time関数まわりとif文またはcase文の条件式実行、ファイルを 直接PHPで表示する方法などを組み合わせればすぐできると思います。
お礼
ぼんやりとですがイメージできました。ありがとうございます。
お礼
別の方だったとは!すみません! 分かりやすい説明をありがとうございます。PHPでもJavaScriptでも実現できるんですね。知り合いにこの質問をしたとき、「PHPはサーバの時間を見に行って19:00で強制的に切り替えられるけど、JavaScriptはクライアントPCの時刻しか参照しない。だからPCの時計を変えられたら(たとえば10:00とかにしちゃうと)意味ないよ」と教えられたので、確実にやるにはPHPしかないのかなと思ってました。 参考リンクはこれから読ませていただきます。本当にありがとうございます!