• ベストアンサー

時間によって異なる処理をさせたい

1.HTMLファイルに、朝と夜で異なるCSSを読み込ませたい。 2.HTMLソース内に処理プログラム(Javaなど)を組み込みたくない。 3.表示するHTMLは複数(朝はファイルA・夜はファイルBへという形式の)作成したくない。 上記三点の要望に応えられるようなプログラムがあれば、教えていただきたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Katsu1030
  • ベストアンサー率59% (19/32)
回答No.4

 昨日サンプルを公開させて頂いたのですが、URLが個人情報に抵触するという話で、ばっさり消されてしまいました(汗  お急ぎとのことですので、ひとまずソースを貼付してみます。 ----(以下ソースここから)-------------- #!/usr/local/bin/perl # 上のPerlのパスは環境に合わせて変更が必要 # 時間ごとの自動振り分けスクリプト(1) # 勿論HTMLファイルでも指定してしまえば振り分け可能です。 # CSSで使用する場合は、ページ内でCSSを呼び出している場所を # このスクリプトに変更します。 ### 設定開始 ### ----------------------------- # 振り分け先の設定 $jump1 = 'http://www.xxx.co.jp/day.css'; # ジャンプ先1 $jump2 = 'http://www.xxx.co.jp/night.css'; # ジャンプ先2 # 判定時刻の設定 $time_chk1 = 5; # (この時間まではジャンプ先2へ・この時間以降はジャンプ先1へ) $time_chk2 = 17; # (この時間まではジャンプ先1へ・この時間以降はジャンプ先2へ) ### 設定おわり ### ----------------------------- # 現在時刻(時)を$hourへ代入 $hour = (localtime(time))[2]; # 判定処理 if($hour >= $time_chk1 && $hour <= $time_chk2) { # 昼用ファイルをURL絶対パスで指定する print "Location: $jump1\n\n"; # 上記以外の処理 } else { # 夜用ファイルをURL絶対パスで指定する print "Location: $jump2\n\n"; } # 終了 exit; ----(以上ソース終わり)--------------  一行目のPerlのパスと、ジャンプ先のCSSのURLは替えておいて下さい。

TMEspion
質問者

お礼

お返事が遅れて申し訳ありません。 回答ありがとうございます。 サンプルについては、ばっさり切られる前に1度一通り見ておいたので、 履 歴 が 残 っ て い れ ば もう一度じっくり見たいと思います。 とりあえずは、上記のソースを応用して、試してみたいと思います。

TMEspion
質問者

補足

サンプルを使って試してみたところ、 希望通りの動作をしてくれました。 細かく丁寧なご説明、 ありがとうございました。

その他の回答 (3)

  • Katsu1030
  • ベストアンサー率59% (19/32)
回答No.3

 お返事が遅くなりました。  #2さんの方法だと、CSS用のCGI1個で事足ります。  ただ、CSSを編集するのが困難になりそうですので、私だと以下の方法にします。 (ローカル時刻の取得) (時刻分岐)  (朝なら)朝用.cssを案内  (夜なら)夜用.cssを案内 (処理終わり)  分岐処理では、 「print "Location: CSSまでのフルパス\n\n";」 とすれば、静的なCSSファイルを自動的に読み込ませられます。  もう少し時間(今夜頃)を頂ければサンプル提供可能です。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

困り度3ですので、#1さんの代わりにお答えします。 質問者さんのCGIについての知識がよくわからないので伝わるかは不安ですが。。。 今回の件で朝と夜とのHTMLの差というのはCSSの指定の部分だけです。 この部分を分岐するわけです。 #HTTPヘッダー print "...."; print "...."; print "\n"; #HTML出力 print "<html>"; print "<head>"; print "<style>"; #分岐 if(朝なら){ #朝用のCSS出力  print "...."; }else{ #夜用のCSS出力  print "...."; } print "</style>"; .... .... .... .... こんな感じになります。

TMEspion
質問者

お礼

書き込みが遅れて申し訳ありません。 回答ありがとうございます。 確かにこの方法でもできそうですね。 しかし、#1さんのおっしゃる通り、 編集する場合の手間がかかりそうなので、 今回は#1さんの方法でやってみたいと思います。

  • Katsu1030
  • ベストアンサー率59% (19/32)
回答No.1

 条件分岐動作をさせる以上、2か3は必須になると思われますが…。  プレーンなHTMLではどう考えても不可能です。  どうしても上記条件を満たしたければ、CSSをCGIなどで動的に生成するか分岐処理をしない限り無理かと思われます。  動きとしては、定義するCSSファイルの変わりに条件分岐用CGIを指定し、そのCGIの内部処理で時刻での振り分けを行えば、望みの動作は可能かと思われます。  これだとクライアント側に依存せずCSSを振り分けることは可能になります。

TMEspion
質問者

補足

回答ありがとうございます。 >動きとしては、定義するCSSファイルの変わりに >条件分岐用CGIを指定し、 >そのCGIの内部処理で時刻での振り分けを行えば、 こちらのやり方でやってみようと思うのですが、 CGIの内部処理の方はイメージできるのですが、 その後の出力の仕方がイメージできません。 もう少し具体的に聞かせていただけないでしょうか?

関連するQ&A