• 締切済み

時間でリンクが変わるSSIとCGI

お世話になります。よろしくお願い致します。 時間によって飛ぶリンク先を変えるCGIのスクリプトをSSIと組み合わせて考えていますが、頭が混乱しています。どなたか教えてくださいませ。 午前1時から午前5時までは違うページにしたいです。 <A href='<!--#exec cmd="jikan.cgi"-->' ><この時間の楽しいページ♪</A> というSSIを使ったリンクをSHTMLのページに作っておきます。exec cmdは使えます。 で、 jikan.cgiで、夜中はyonaka.htmlに飛ばせて、それ以外はhiru.htmlにリンクしたいです。 ちなみにyonaka.htmlは少しセクシーなページにしたいです(笑)。 yonaka.htmlには.htaccessでアクセス制限でリンク元からしか入れないようにする方法は知っています。つまり、前回yonaka.htmlに入った人がお気に入りに登録してもアクセスできないようにする方法は知っています。 jikan.cgiは、 $hour = (localtime(time))[2]; if ($hour > 1 && $hour < 5) { というよなあたりまでは良いでしょうか?…無知で恥ずかしいです(涙) あと少しとか思われるかも知れませんが、私には無限の彼方です(大涙) よろしくお願い致します。(レモン)

  • Perl
  • 回答数4
  • ありがとう数5

みんなの回答

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.4

とりあえず、「$」を付け忘れてました。 <!--#if expr="$DATE_LOCAL > '01' && $DATE_LOCAL < '05'" --> こんな感じだと思うんですが・・・私もよくわからなくなってきました。

lemon530
質問者

お礼

教えてgooの方から締め切りみたいです。 もしも回答があればお願いします。(a_lemon)

lemon530
質問者

補足

考えていただいてありがとうございます。 今から旅行のために、テストとご返事が最低4日ぐらいかかります。 どうぞ宜しくお願い致します(レモン a_lemon)

回答No.3

SSIだけで解決する方法(ANo.1、ANo.2)と、SSIからCGIスクリプトを呼び出して、CGIスクリプトの方で解決する方法(jikan.cgiを使う方法)がありますけど、 どちらをされたいのでしょうか? > $hour = (localtime(time))[2]; > if ($hour > 1 && $hour < 5) { > というよなあたりまでは良いでしょうか? 1時からなら、"1"という数字も含めなければならないですから、 if($hour >= 1 && $hour < 5) { となると思います。

lemon530
質問者

お礼

教えてgooの方から締め切りみたいです。 もしも回答があればお願いします。(a_lemon)

lemon530
質問者

補足

あいまいな感じになっていて申し訳ありません。 steel_grayさんがSSIでスマートな回答をされたので、 SSIで上手く動作すればSSIでOKです。 もちろん、SSIでCGIを呼び出すことでもOKです。 またまた、あいまいになってすみません。 今の段階では、SSIで解決したい気持ちが強いです。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

DATE_LOCALは文字列として扱われるようなので <!--#if expr="(DATE_LOCAL gt '00') && (DATE_LOCAL lt '05')" --> と、しないといけなかったようです。

lemon530
質問者

お礼

教えてgooの方から締め切りみたいです。 もしも回答があればお願いします。(a_lemon)

lemon530
質問者

補足

何度も申し訳ありません。 色々とためしていますが、うまくできません(涙) 今度は、夜だけになってしまいます。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

1:00~5:00って単純な条件ならSSIだけでもできそうですよ。 例) <!--#config timefmt="%H" --> <!--#if expr="(DATE_LOCAL > 0) && (DATE_LOCAL < 5)" --> <a href="夜間ページURL">夜間ページ</a> <!--#else --> <a href="昼間ページURL">昼間ページ</a> <!--#endif -->

参考URL:
http://www.tohoho-web.com/wwwssi.htm
lemon530
質問者

お礼

超じんそくで超スマートなご回答をいただき感激です。 テストをあとでしてみます。夜中まで起きています。 あ、時間を変えてテストすればいいんですね(笑) 私のアイデアは未完成ですが、本当にありがとうございました。 「とほほさん」のページも拝見しましたが、 elseやendifの後にスペースを入れておく必要があるんですね。 大変に勉強になりました。重ねてお礼申し上げます。

lemon530
質問者

補足

回答のお礼をしたあとですが、 今テストしていて戸惑っています。 上のご回答の場合だと、夜間の時間にアクセスしても昼間のページになってしまいます。 なぜでしょうか? サーバーの時間は正しい日本時間になっていて、 … <!--#endif --> <!--#echo var="DATE_LOCAL" --> と書いて確認してみると、条件の中の時間になっています。 すいません。また、頭がこんがらかってきました。(a_lemon)

関連するQ&A

  • PHP+SSI

    「index.php?a=100」のようなページをSSI(ssi.shtml) から実行したいと考えています。 ところがssi.shtml内で <!--#exec cmd="index.php 100"--> とし index.php内で引数渡しの設定として「$argv[0]」として ますが、ssi.shtmlを実行しても実行結果を返さずブランクに なってしまいます。index.phpのパーミッションも実行可能に 設定しているのですが…。  上記以外の方法でも結構ですので、SSIで引数付きのPHPを 実行する方法をご存じの方がいらっしゃいましたら、教えて ください。 Apache 1.3.31+PHP 4.3.1で動いています。もちろんSSIで #execがNGなんてオチも有りません。 なお、下記URLによればSSIからの引数渡し自体はCGIだと可能の ようですが…。 http://tohoho.wakusei.ne.jp/wwwssi.htm#Exec

    • 締切済み
    • PHP
  • リンク元を調べるCGIの作り方で悩んでいます

    はじめまして。Perl暦1ヶ月の者です。 自分のサイトのリンク元を調べるCGIを設置しようと思いますがどんな方法があるでしょうか。 私が調べた方法は、 1.CGI+SSIを利用 2.CGI+インラインフレームを利用 ですが、1.は各ページに <!--#exec cgi="○○.cgi"--> を入れてCGIを起動させるわけですが、全ページが.shtmlとなってしまい抵抗を感じます。.htm → .shtmlと変わることにより当分検索順位が下がるかもしれません。 それで2.を試しました。通常ページ page1.htm にインラインフレームで○○.cgiを埋め込み、ここでカウンターを表示させるとともにログを取得しようと思ったのです。しかしHTTP_REFERERが取得してくれるリンク元はあくまで「page1.htm」ですので役に立ちません。 最も一般的な方法はどのようなものでしょう?詳しい方よろしくお願いいたします。m(_"_)m *できればコードを丸ごと教えていただけると助かります。 ↓作成の条件です↓ ・一般ページはあくまで.htm にしたい。 ・レンタルサーバー屋はSSIは.shtmlと言っている。 ・リンク元一覧は一般ページには表示しない。 ・全ページの外部リンク元を知りたい。

    • ベストアンサー
    • Perl
  • SSIを使ってHTMLページにCGIを埋め込みたい

    使っているサーバーがSSIが使えるとの事で今回初めてSSIを使ってHTMLページにCGIを埋め込みたいと思い、色々なページを見ながら設置してはみてるんですが、 [an error occurred while processing this directive] となってしまいます。 やってみた事は test.shtmlを作り<BODY></BODY>の中に <!--#exec cgi="/navi/can.cgi"--> などとしてみたりしましたが上記のエラーが出てしまいます・・ 初歩的な質問なのかもしれませんが何が間違えているのかもわからなく、すみませんが教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • フレームページでSSIを使ってアクセス解析

    フレーム内ページ(main.shtml)にSSIを使ってリンク元を取得したいのですが、どなたか良い方法はないでしょうか。フレームページはindex.htmlです。 SSIでなければ"parent.document.referrer"を使ってCGIで取得するのは設置したことはありますが、SSIだとリンク元が親フレーム情報しか得られません。なんとかSSIでやりたいのですが…。リンク元以外の取得はできますがリンク元が取れません。SSIの現在の記述は下の通りです。 <!--#exec cgi="./acc.cgi"--> どうぞ、暑いのにすいません、教えてください。

    • 締切済み
    • CGI
  • SSIを使ってCGIを呼び起こしたいのですが

    index.shtmlのタグにssiを使用したいのですが index.cgi?mode=m のようなパラメータもつけて実行させる場合 <!--#exec cgi="./index.cgi?mode=m"> ではだめなんでしょうか? [an error occurred while processing this directive] というエラーがでました。 どうかご教授ください。

    • ベストアンサー
    • CGI
  • SSIを使ったテキストカウンタ

    ど素人です。 SSIを使ったテキストカウンタ http://www.atsh.com/cgi/EScut.shtmlこちらの、ページがうまくできません。 shtmlのページのパスは <!--#exec cgi="http://www.ドメイン/TCcut.cgi"--> でいいのでしょうか。 http://www.ドメイン/TCcut.cgi で開くと問題なくカウントされてます。 宜しくお願いします。

    • ベストアンサー
    • CGI
  • Apache 2.0 で SSI cmdが動かない

    同じ質問で http://okwave.jp/qa/q451501.html これと同じですが、未だ解決していないようなので。先に上記を見て下さい。 SSI の機能は ファイルアクセス表示などのコマンドが実行できているので、動作しています。 <!--#exec cmd="test.cgi" --> でエラーログが下記です。 execution failure for parameter "cmd" to tag exec in file.......shtml cmdの実効に失敗した。 test.cgi はDOSのbat で動作、及びHTMLのhead等のタグをプリントで入れれば 正常動作しています。 先人の質問でやり取りは一通りやっています。LoadModule等も #exec cmd がどうしても機能しないと思えますが 宜しく御願いします。

    • 締切済み
    • CGI
  • SSIが認識されません。誰か解かりませんか?

    SSIが上手く認識されません。 shtmlの書き方がおかしいのでしょうか? shtmlは、/public_html/cgi-bin/○○.shtmlに入っています。 インターネットエクスプローラーでアドレスを入力すると表示されます。但し、cssが認識されていません。 htmlの中には、 <!--#exec cmd="http://○○○.com/cgi-bin/○○.shtml"-->と入力しています。 ソフトはビルダーです。 shtmlは、必要な分しか入力していません。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <STRONG ○○・・・ ・ ・ ・ </TBODY> </TABLE> </DIV> </DIV> で終わっています。 アクセス権限は755に変更しています。 サバーにアップしてもshtmlの部分が認識されないのは何故ですか? 宜しく、お願いします。

  • Apache2.2でPerlを呼び出すSSIを使ったHTMLをloca

    Apache2.2でPerlを呼び出すSSIを使ったHTMLをlocalhostで動かそうとしています。 AddHandler cgi-script .cgi .plに変更。 exec cmdをHTMLファイルに埋め込みました。 <!--#exec cmd="/PROGRA~1/APACHE~1/Apache2.2/cgi-bin/counter.pl counter"--> インターネットのApacheでSSIを使う方法を読み,httpd.confの中に Options FollowSymLinks Multiviews の後にIncludesをつけ   AddType text/html .shtml と   AddHandler server-parsed .shtml を加えました。しかし、localhostで実行するとHTMLのSSIの部分だけ表示されません。 (アクセスカウンターのカウンターだけ表示されません)。エラーログには ”指定されたファイルが見つかりません。 : don't know how to spawn cmd child process: C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/counter.shtml” と記録されていました。 どうしたらよいのでしょうか。 どなたか解決できるかた、回答よろしくおねがいします。

    • 締切済み
    • CGI
  • SSIの『#exec cmd』と『#exec cgi』の違いがよくわかりません

    SSI初心者の者です。 参考書(CGIプログラミング入門/翔泳社)を見ながらCGIとSSIの勉強をしてるのですが、SSIの『#exec cmd』と『#exec cgi』の違いがよくわかりません。 本には前者はPerlスクリプトで後者はCGIスクリプトの場合に使うって書いてあるのですが、この2つってどう違うのですか? 前後の文脈から察するにCGIスクリプトは『print "Content-Type: text/html"』があって、 Perlスクリプトはこれが無いものと読み取れるのですが そうなのでしょうか? 初心者向けに御回答していただけますよう、よろしくお願いいたします。

    • ベストアンサー
    • CGI