• 締切済み

ローテーションで表示させるCGI

バナー管理のCGIはたくさんあるのですが、大体が表示方法がアットランダムです。定められたローテーションで表示させるCGIをご存じないでしょうか? つまり、N個の画像ファイルをサーバーのあるデイレクトリに保存します。方やhtmlファイルには、(N-X)個の画像の位置を指定ておいて、ローテーションで順番に表示されるCGIです。 ご存じの方、ご教示お願いいたします。

  • CGI
  • 回答数2
  • ありがとう数2

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

他のCGI設置経験があれば類推可能かとも思ったのですけど。無理でしたか? まずは、「ここから」の次の行から、「ここまで」の手前の行までを コピーして、エディターまたはメモ帳の新規ファイルに貼り付けて下さい。 そして、ファイル名を、「changer.cgi」などとします。 windowsの古いversionのメモ帳だと拡張子に「.txt」が付加されることがあるので、そのときはエクスプローラーでファイル名を変更して下さい。 それから、お使いのサーバーでの「perl呼び出しパス」に合わせて、1行目を書き換えます。 次に、画像ファイルのリストのところを、サーバーに設置した時のcgiから表示したい画像までの相対パスで入力します。 ファイル名はシングルクォーテーション「''」で括ることと、複数のデータは半角カンマ「,」で繋げるところの入力忘れに注意して下さい。 また、配列の引数は0開始で、カウンターは1から開始するので、リストの2番目の画像から表示開始になります。ローテーションして1番目に戻ります。 ftpソフトなどで、cgi設置用のディレクトリーに上記「changer.cgi」と画像ファイルとをアップロードします。 パーミッション設定は、 changer.cgi は705 画像ファイル は644 あと、cgiの実行権限がownerではないサーバーの場合は、カウンター用ファイルも先に作っておくことをお薦めします。 エディターで「0」とだけ書いて「numfile.log」というファイル名で保存し、cgiを置いたディレクトリーにアップロードします。 カウンターファイルのパーミッションは606とします。 実行チェックとして、cgiのURIをブラウザのURI欄に入力し、 表示されたなら、リロードして画像が切り替わることも確認。 このURIを表示したいページのimgタグのsrcに指定すれば完了です。

takanekido
質問者

お礼

丁寧に教えていただいたにもかかわらず、連絡が遅れて申し訳ありません。当方あまりCGIの知識がないため、少し時間がかかると思いますが、教えていただいたものを稼働させるべくガンバってみます。 本当にどうもありがとうございました。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

簡易カウンタースクリプトをすこし書き換えればいけそうなので、作ってみました。 ##### ここから:環境に合わせて適宜書き換え下さい #!/usr/local/bin/perl ### 画像ファイルのリスト @files =('./num/a0.gif', './num/b1.png', './num/c2.jpg' ); ### カウンターファイル名:自動作成します $numfile = 'numfile.log'; ### no cache flag; no-cache出力する=1、しない=0 $no_cache = 1; ########## ### カウント の取得 if (-e $numfile) { open(FILE, "<$numfile"); $total=<FILE>; close(FILE); $total =~ tr/\r\n//d; }else{ $total =0; open(FILE, "+>$numfile"); close(FILE); chmod 0666, $numfile; } $total ++; open(FILE, ">$numfile"); print FILE "$total\n"; close(FILE); ### 画像ファイル名の同定 $image = $files[$total % scalar(@files)]; ### 画像タイプ(拡張子で代用) $ImgType = ( split(/\./, $image) )[-1]; ### 画像ファイルを開く open(IMG, "$image") or &error(); # windows 用 入出力変更 binmode IMG; binmode STDOUT; # イメージの出力 print qq(Pragma: no-cache\n) if $no_cache; #←キャッシュを残させないで毎回画像を取得 print qq(Content-type: image/$ImgType\n\n); print while (<IMG>); # イメージファイルのクローズ close(IMG); exit; sub error{ print qq(Pragma: no-cache\n) if $no_cache; ### キャッシュを残させない print qq(Content-type: text/plain\n\n); print 'error !'; exit; } #####ここまで

takanekido
質問者

お礼

丁寧に対応していただき、たいへんありがとうございました。ただ、私にプログラミングの知識がなく、「猫に小判」状態です。返って迷惑をおかけいたしました。 御礼申し上げます。

関連するQ&A

  • CGIを使って、ホームページの画像を自動ローテーション表示する方法を教えて下さい。

    携帯電話のホームページを作成しています。  まったくの初心者なので知識が無いのですが、 CGIを使って、ホームページの画像を自動ローテーション表示する方法があると聞いたのですが、方法がわかりません!(画像を例えば毎日変更して表示させる方法です!?)  お知りの方がいましたら是非宜しくお願いいたします。

    • 締切済み
    • CGI
  • CGIで画像表示されなくGIF89aXとなります、なぜ?

    CGI初心者です。 CGI可のレンタルサーバーで、CGIで画像を表示させたいのですが、 ブラウザで見ると画像がでません。 画像の位置、パーミッションなどは何度も確認しました。 転送はバイナリです。 ------------- #!/usr/bin/perl $view = 'r1.gif'; print "Content-type: image/gif\n\n"; open IMGG,"$view"; binmode (IMGG); print <IMGG>; close (IMGG); ------------------------ このCGIのhttp:~CGIを直接打つとブラウザに 「GIF89aX」とでて画像が出ません。 画像をhttp:~で直接指定するとちゃんと画像が出ます。  なぜでしょう? すぐに回答ほしいです。 どなたか詳しい方、よろしくお願いしま~す。

    • ベストアンサー
    • CGI
  • CGIをサーバを通さずにブラウザに表示させるには?

    ハードディスク上のCGIファイルをクリックすると、テキストとして表示されると思いますが、 CGIファイルをサーバにアップしないで、CGIを表示するにはどうすればいいのでしょうか。 ご存知の方回答よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ローテーションバナー広告について

    一行タイプのローテーションバナーに関しては、 ローテーション・バナーを作ってみよう | アフィリエイトのためのPHP入門講座 http://affiliate.aki-f.com/prog/cat/cat7.html 上記のサイトを参考に設定が出来たのですが、 例えば、広告リストに10サイト載せて、 そこから5サイトランダム表示という形で カスタマイズすることは可能でしょうか? どうかご指導の程、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 私の作ったCGIスクリプトを見てください。どこが間違えていますか

    アクセスありがとうございます。 Red Hat Linux8.0でサーバを構築してCGIスクリプトを実行しようとしているのですが、どうもうまくいきません。 私が作成したCGIスクリプトは次のようなものです。 ファイル名「first.cgi」 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>First CGI</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "文字を表示するCGIです。\n"; print "</BODY>\n"; print "</HTML>\n"; そして文字コードを「EUC」、改行コードを「LF」に変換しサーバにアップロードしました。 その後SSHでサーバにログインし $ chmod 755 /home/burn/public_html/first.cgi と「first.cgi」に実行権限を追加し $ /home/burn/public_html/first.cgi と作成したCGIスクリプトをテストしてみたのですが : bad interpreter: No such file or directory とエラーメッセージが表示されてしまいます。 「そのようなファイルやディレクトリはありません」というような意味でしょうか。 しかし、そんなはずはないと思います。 $ ls /home/burn/public_html first.cgi と「ls」コマンドを実行すれば「first.cgi」が表示されるのですから。 他に何かする必要があるのですか。 このCGIスクリプトを動作させるにはどうすればいいのか教えてください。

  • XサーバーでCGIを使うには??

    質問なのですが、CGIを使いたいなと思い、幾つかのサイトを 見て勉強していたのですが、どうにも上手くいきません。 私はXサーバーを使用しています。XサーバーでCGIちゃんと 使えるよっていう方がいらっしゃれば一層助かります!! サーバーに置いてある自分のCGIのファイルをクリックして 開くと背景が青緑?になってソースがそのまま表示されてしまいます。 ちなみに、CGIファイルは以下です。public_htmlの下のcgiというフォルダの下にtest1.cgiというファイル名で保存しています。 =======-===ここから================= #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body bgcolor=\"#ffcccc\">\n"; print "これはCGIのテストです。\n"; print "</body>\n"; print "</html>\n"; (文字コードはShift_JISです。) ===========ここまで=============== .htaccessのファイルも、CGIのファイルと同じ階層に入れて います。以下がそのファイルです。public_htmlの下のcgiというフォルダの下に.htaccessというファイル名で保存しています。 ==========ここから================ AddType application/x-httpd-cgi .cgi<CR><LF> (最後の行は改行しています) (文字コードはShift_JISです。) ==========ここまで================ どうすれば良いのでしょうか??ご教授お待ちしております。

    • 締切済み
    • CGI
  • CGIについて…エラーで表示されません。

    CGIの勉強を始めたばかりの初心者です。 参考書を読んでいて、サーバーの時間を取得して表示する…っていうので、 本の通りに記述したのですが、表示されないんです。 (まだ途中段階で、とりあえずhtmlを記述した所です。) 最初、print"<html>\n";等、全部区切って書いてみた時は、 サーバーの時間は表示されましたが、ブラウザでソースを表示すると、htmlは、 </body> </html> しか表示されていませんでした。 (間違ってるのかな?と思って見直したり書き直したのですが…何度やっても同じでした。) なので、print <<EOF; ~ EOFの中に記述してみたところ、 サーバーエラーになってしまって、表示されないんです。 無料のサービスのサーバーで、自作CGIもOKです。 サーバーのヘルプに書いてあったのを読んで、 cgi-binというディレクトリに入れて、パーミッションも755に設定しました。 どこかおかしいのでしょうか?それともサーバーの問題でしょうか? #!/usr/local/bin/perl print"Content-type:text/html\n\n"; $now=localtime(time); print <<EOF; <html> <head> <title>SAMPLE</title> </head> <body> $now </body> </html> EOF

    • ベストアンサー
    • CGI
  • CGIの中で画像ランダム表示

    掲示板を設置中です。掲示板自体は動作確認しきちんと動いています。 上部タイトルを画像で作ったのですがその絵をランダムに表示できないかと考えています。 この場合どの方法が適切なのでしょうか? CGIの画像表示部分に画像ランダムCGIのソース(?)を書く。 Javaでそんなことが出来るような気がしたけど、Javaで書く。 と、素人なりに2通り考えてみましたが… CGIのスキルはほとんどありません。フリーCGIなどを少々改造して設置できる程度です。0から書くような知識は持っていません。 こんな私にでもできるような方法があったら教えてください。お願いします。

    • ベストアンサー
    • CGI
  • ApacheでCGIが正しく動かない。

    RedHatLinux8をインストールして、 Webサーバーを立てよう~と思い立ててみました。 Apache2.0.40です。 一応htmlファイルはのぞけるようになったんですが、 CGIがちょっとおかしくて・・・ #!/usr/bin/perl print "Content-type: text/html\r\n\r\n"; print "Hello, World."; ↑を書いたtest.plはHello, Worldとちゃんと表示されました。 しかし、掲示板・カウンターを開くと・・・ 「ログファイルを開くことができません」 という主旨のメッセージが表示され、正しく実行できません。 ./log.txt とちゃんと指定しているんですが・・・ そのログファイルを開くとサーバーがCGIをして認識しているらしく、 「InternetServerError」が出て開けない・・・。 CGIの属性は755 ログも緩くして755に設定しました。 それでも状況は変わりません。

  • CGIで画像が表示されません

    こんにちは。最近フレッツADSLに変更し、ISPのダイナミックDNSも利用できますので、 自前WEBサーバを立ち上げようとしております。 現在、Win2000Proで Apache for win32 1.3.22、 ActivePerl-5.6.1.630で 何とかWEBサーバは稼動しております。 通常のHTMLは表示可能です。CGIも動作しますが、そのCGI内で表示しようとする画像(GIF,JPG,PNG)が表示されません。 (Xマーク状態です。これはcgi-bin配下ディレクトリ内です)プロパティをみても、パスは良さそうなのですが・・。 以前いたISPはcgiwrapを使用していましたので苦労しました。同じ状態です。 confファイルを書き直す事で可能?やっぱりCGIディレクトリに画像は不可?と 2つの疑問で行き詰まっております。 cgiのあるディレクトリに.htaccessを置き AddHandler server-parsed .gif .jpg .png でもダメでした。 パスの指定が悪いのかなー^^;なんか、トンチンカンな失敗の気もしますが・・・。 どなたかお力添え頂ければ幸いです。

    • 締切済み
    • CGI

専門家に質問してみよう