• ベストアンサー

txtデータをhtmlに表示してくれるCGI

zebedeerの回答

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.7

そう言えばhtmlなかったですね。 足してみます。 エラー時にもhtmlが表示されますが、詳しい内容はhttpdのエラーログを確認してください。 (セキュリティ上、詳細なエラーメッセージをユーザへ返しません) #!/usr/bin/perl my $path = './'; my ($file) = $ENV{'QUERY_STRING'} =~ /(\w+\.\w+)$/o; opendir (DIR,$path) or &error ('opendir'); my %dir = map {$_,$_} grep !/^(?:\.|\.\.)$/o,readdir (DIR); closedir (DIR); open (IN,'< '.$path.$dir{$file}) or &error (open'); print "Content-type: text/html\n\n"; print <<"END_HTML"; <html> <head><title>$dir{$file}</title></head> <body> END_HTML {local ($/) = undef;print <IN>;} print <<"END_HTML"; </body> </html> END_HTML close (IN); sub error { print "Content-type: text/html\n\n"; print <<"END_HTML"; <html> <head><title>error</title></head> <body> $_[0] </body> </html> END_HTML die; }

nyandane
質問者

補足

すみません。 >詳しい内容はhttpdのエラーログを確認してください。 どうやってやればよいのでしょうか?

関連するQ&A

  • CGIでtxtが読み取れません…

    --------------frame.cgi----------------------- #!/usr/bin/perl # フォームからのデータを読み込む $ID1 = '12345'; $path = 'http://xxx.xxx/cgi-bin/atc/user/'; $txt = '.txt'; $FileName = $path.$ID1.$txt; print "Content-type: text/html\n"; print "\n"; if (-f $FileName){ print <<"DISP_SET"; <HTML> <frameset rows="80,*" cols="*" framespacing="1"" frameborder="yes" border="1" bordercolor="#000000"> <frame src="input.cgi?$ID1" name="top" scrolling="no" noresize> <frame src="http://xxx.xxx/nodata.htm" name="mainF"> </frameset> </HTML> DISP_SET } else{ print <<"DISP_SET"; <HTML> <BR> 指定された$ID1はありません。<BR> 新規発行をするか、IDの確認をしてください。<BR> <BR><BR> <a href="javascript:history.back();">一つ前のページへ戻る</a> </HTML> DISP_SET } exit; ----------------------------------------- サーバの中身を引越ししようと有料のサーバにうつしたのものです。 このようになっているのですが、txtファイルが読めていないらしく、エラーメッセージの方が出てしまいます。 ちゃんと12345.txtというのは存在します。 フォルダのパス名とかは修正し大丈夫だと思うのですが、読み取れません… http://xxx.xxx/cgi-bin/atc/input.cgi?12345 読み取れる http://xxx.xxx/cgi-bin/atc/frame.cgi?12345 読み取れない なので、txtデータを読み取れていないと思いました。 原因、修正個所、追加補足などありましたら、よろしくお願いします。

    • ベストアンサー
    • CGI
  • サーバにあるdata.txtをブラウザにcsvで表示したい。

    サーバにあるdata.txtをブラウザにcsvで表示したい。 アンケートcgiで、できたdata.txtをブラウザ上(管理画面のようなパスワードがかかった画面)で、csv表示もしくはCSVデータとしてダウンロードするのに、一番簡単な方法はなんでしょうか。 どういうプログラムを組んだらいいのか検討もつかなくて、困っています。

  • robots.txtやCGIを設置したいのですが

    二次創作サイトのみ可で、無料のサイトスペース(審査制)をお借りしている者なのですが、1つ相談があります。 そのサーバーからアカウント発行のメールを頂いたときに、 「html/index.html として置かれたファイルが、インデックスページとなります」 「ウェブサイトを公開する場合は、html/以下に置いて下さい」 とありました。 FTPを繋いで見ると、確かに最初から「html」というディレクトリがありましたし、ここの中にindex.htmlを置くと、http://*******.jp/発行したアカウント となりました。 今のところアクセス解析のCGIと、robots.txtを設置しようと思っています。 それで、今まではインフォシークの無料サーバーを使っていたものですから、「cgi-bin」というディレクトリを作り、その中にCGIを入れなければいけませんでしたが、特に何も書かれていない場合、ディレクトリの指定があるかどうかも分かりません。 また、robots.txtは ttp://sp999.oheya.jp/tips/tips/03_robots.htm このサイトによると、 自分のサイトのトップディレクトリにrobots.txtをアップロードする。 とありますが、これは「html/」の中にアップロードしなければいけないのか、その外にアップロードしなければいけないのか分かりません。 なので上記2つを、サーバーの管理人さんにメールで問い合わせてみようと思っているのですが、大丈夫でしょうか。 審査制のところなので、「ある程度のCGI知識が必要」といわれていましたが、私は日記CGIのnicky!くらいしか設置したことありませんし(それでも審査は通ったのですが)、 これくらいでメールするなよ、と管理人さんに叱咤されそうな感じもします。 よろしければ、アドバイスお願いします。

  • txtの中身を表示する方法教えてください!(javaスクリプト?)

    デスクトップに置いてあるひとつのフォルダに、A.htmlというファイルと、B.txtというファイルがあります。 A.htmlをブラウザ(IE)で開いたとき、B.txtの中に書いてある文章をまるまる表示させるには、 どのようにすればいいでしょうか? ネット上でいろいろ調べたところ、http://questionbox.jp.msn.com/qa3189160.htmlの質問にイメージが近かったのですが、 読み込むファイルはjsじゃないですし、中身を変更したくない(↑の質問のように、”var data = [・・・”といった書き換えをしたくない)のです・・・。 htmlファイルも、txtファイルも、サーバーには送りません。 ネットに繋がっていないパソコンでだけ使います。 よろしければ、サンプルプログラムを書いていただけると助かります。 本当に困っております、どうぞよろしくお願いいたします!

    • ベストアンサー
    • HTML
  • 別サーバーのcgiへバイナリデータを送る方法

    サーバーAに、バイナリデータがあります。 これをサーバーBのcgiへデータを渡したいのですが、方法を教えてください。 HTMLで書くと、以下のようにc:\data.binを<form>でcgiに送信するようなイメージです。しかし、<input file>タグではセキュリティーのためvalueでファイルを指定することができません。 ここのc:\data.binは、ファイル名が変動するため、人間に手で選択させることはさせたくないです。 <form action="http://www.サーバーB.jp/Server_B.cgi" enctype="multipart/form-data" method="post"> <input type="file" value="c:\data.bin"> <input type="submit" value="サーバーAに送信"> </form> これを、cgi(Perl)を使用して、同じようなものを書くことはできますでしょうか? httpヘッダを書いて、その後ろにデータを送信して、、といった感じでできるような気がするのですが、 httpヘッダの書き方が分かりません。 受け側のサーバーBのcgiでは、CGI_Lite.pmを使用してバイナリデータを受信します。 通常、バイナリのデータ送信はftpを使用するのだと思いますが、相手側がftpに対応していません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • サーバー内データファイルの転送

    サーバー内に生成したデータファイルを異なるサーバーに転送するCGIを教えてください。 例)サーバーA内に作成した TEST.TXT をサーバーBに書き込む(転送)方法 よろしくお願いします。

  • cgiでのデータの出力についてです。

    したいことは、cgiでULRに飛ばしさらに、テキストエリアにそれぞれの文章を記入したいと言う物です。 説明しにくいので箇条書きで書きます。 input.cgiでパスワード、もしくは名前(英数) ↓ ボタンを押す。action="location.cgi" ↓ location.cgi内でttp://******.jp/sendList.asp?とinput.cgiのパスワードから代入されたURLに接続、同時に接続ページの<textarea>に一人々へメッセージを入れる。 (例)Aさんが来客:こんにちは。 bさんが来客:おひさしびりですね。 >同時に接続ページの<textarea>に一人々へメッセージを入れる。 というのが出来ません。よろしくお願いします。 他にCGIを作れば可能とかでしたらそちらの方も教えていただきたいです。

    • ベストアンサー
    • CGI
  • flashから別サーバーにあるCGIを起動

    別サーバにあるCGIを起動する方法で行き詰っております。 どなたかアドバイスをお願いいたします。 ■現状 A社のサーバーにHTML(SWFも含む)を入れて、B社のサーバー(UNIX,Perlバージョンは最新)にあるCGIを起動させたいと考えています。(B社の中で同サーバーにHTMLとCGIを入れてテストした場合は問題なく動いています。) しかし、A社のサーバーにHTMLをアップしてもらうと、HTMLやSWFは問題なく閲覧できるのですが、B社のCGIが起動しません。これを解決したいのですが、なんとかいい方法はないでしょうか。 A社のアドレスはhttp://www.xxx.com/とします。 B社のCGIが入っているアドレスはhttp://www.zzz.com/cgi-bin/とします。 以下を試していますが、A社のサーバーでは動きませんでした。 B社サーバー内にc_01.swfというのを作り(http://www.zzz.com/c_01.swf)、1フレーム目にCGIを起動するコードを書きました。(以下) this.createEmptyMovieClip("page_mc1", 1); loadVariables("http://www.zzz.com/cgi-bin/c_01.cgi", page_mc1, "GET"); c_01.swfをA社のHTMLにあるSWFから _root.miniswf.loadMovie("http://www.zzz.com/c_01.swf"); というように読み込んでみましたが動きません。また、これは適当にやっているので見当違いかもしれませんが、A社のindex.htmlに <!--ムービーで使用されている URL--> <a href="http://www.zzz.com/"></a> <a href="http://www.zzz.com/cgi-bin/"></a> というタグを入れてみましたが動きませんでした。 B社で借りているレンタルサーバー(http://www.eee.com)にHTMLを入れてみると、http://www.zzz.com/cgi-bin/c_01.cgiは動くので不思議です。どなたか助けて下さい。 ※制作しているflashのバージョンはversion=8,0,0,0です。

  • CGIスキンに外部txtを表示するには?

    お世話になります。 初歩的な質問だと思いますが、お付き合いくださるとありがたいです。 ・‥…━━━・‥…━━━ SSIやPHPで、複数ページに表示するメニューを 一個の外部ファイルにして、各ページから読み込む方法がありますよね。 <!--#include virtual="menu.txt"-->等 これは、CGIのスキンには使用出来ないでしょうか。 (例えば、apeboardやCLEVER等のスキンが使えるCGIを使用予定) 他のページと同じようにBBSやリンクCGI、 メールフォームなどのスキンも 同じファイルをメニュー部分として呼び出したいと思っています。 CGIフォルダに.htaccessで「AddType text/x-server-parsed-html .shtml .html .cgi」と書いても呼び出せませんでした。 (同じディレクトリのHTMLファイルは、呼び出せました) 何か方法があるのではないかと思い、書き込みさせて頂きます。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIで複数のデータファイルを利用したソートを行いたい

    ランキングCGIを作成中なのですが、投票順に並べることは出来たのですが open (IN,"$selfile") || &error("OPEN ERROR"); while (<IN>) { ($sno,$item,$shop,$url) = split(/<>/); open (INC,"$base/c$sno.txt") || &error("OPEN ERROR"); ($cnt) = split(/<>/,<INC>); close INC; $rank{} = $cnt; } close IN; foreach (sort {$rank{$b} <=> $rank{$a}} keys(%rank)) { $cnt = $rank{$_}; print "$_"; } これだと$itemだけが$cntを利用して降順で並ぶ形になってしまいます それに沿って$sno・$shop・$url・$cntも表示されるように並べたいのですがどのようにしたらよいのでしょうか? テキストデータは下記の通りです 選択肢テキストデータ $selfile($sno,$item,$shop,$urlの順) 2<>ラーメン<>ラーメン屋<>url2<> 1<>チャーハン<>中華屋<>url1<> 3<>うどん<>日本食屋<>url3<> カウントテキストデータ c1.txt→580 c2.txt→230 c3.txt→460 ---------------ここまで--------------------- このように出力したいです(|←セル区切りだと思ってください) 1|チャーハン|<a herf="url1">中華屋</a>|580 3|うどん|<a herf="url3">日本食屋</a>|460 2|ラーメン|<a herf="url2">ラーメン屋</a>|230 どの部分をどのように直したら出来るのか教えてくださいませんでしょうか? よろしくおねがいします

    • ベストアンサー
    • Perl