• ベストアンサー

CGIの中で出力するテキスト内容をhtml側で表示する方法。

htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。 1.CGIスクリプト(Perlで記述)を用意... test.cgi ----------------------------------------------------- #!/usr/bin/perl print "Content-type:text/html; charset=shift_jis\n\n"; print <<__EOD; <html lang="ja"> <head> <title>TITLE</title> </head> <div align=center> <a>テスト1</a><br> <a>テスト2</a><br> </div><br> </body></html> __EOD open(OUT,">a.tmp") || die "$!"; print OUT "aaaaa\n"; close(OUT); ----------------------------------------------------- 2.htmlを用意 ... test.html ----------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>HTML TEST</title> </head> <body> <script src="http://xxx/CGI/test.cgi"></script> </body> </html> ----------------------------------------------------- 上記のとき、動作として、 ◆ブラウザからCGIのパス(http://svr1/CGI/test.cgi)に直接アクセスした場合、 「テスト1」「テスト2」の文字が表示され、a.tmpファイルも作成されている。 ◆ブラウザからhtml(http://svr1/test.html)にアクセスした場合、ブラウザ画面は何も表示されない (真っ白となる)が、a.tmpファイルは作成されている。 のようになってしまいます。 後者のようにして、htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、 print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。 以上、よろしくお願い致します。

  • goku3
  • お礼率78% (97/123)
  • CGI
  • 回答数10
  • ありがとう数10

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

  • ベストアンサー
  • joker_mk2
  • ベストアンサー率100% (1/1)
回答No.4

<script src="http://xxx/CGI/test.cgi"></script>としているなら perlで出力するヘッダーは print "Content-Type: application/x-javascript\n\n"; としないとならないでしょう。 perlではjavaScript構文を出力します。 例えばhtmlでは・・ <BODY> <SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript"> <!-- document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"test.cgi\"></SCRIPT>"); // --> </SCRIPT> </BODY> として、perlでは #!/usr/bin/perl print "Content-Type: application/x-javascript\n\n"; print "document.write('<A HREF=\"other.html\">てすと</A>');"; てな感じです。

goku3
質問者

お礼

やってみました。結果的には、htmlの表示が真っ白のままでした。ブラウザ(ie6)の設定にもよるのでしょうか。 最後の*.tmpファイルは、test.htmlをブラウザで読み出すごとに毎回生成されています。 使ったファイルの内容です。 -- test.html ------------------------- <html> <HEAD> <title>HTML TEST</title> </HEAD> <body> <SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript"> <!-- document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"counter/test2.cgi\"></SCRIPT>"); // --> </SCRIPT> </body> </html> ------------------------------------- -- test2.cgi ------------------------ #!/usr/local/bin/perl print "Content-Type: application/x-javascript\n\n"; print "document.write('<A HREF=\"other.html\">てすと</A>');"; #document.writeln('<A>てすと</A>'); $t = $^T; open(OUT,">$t.tmp") || die "$!"; print OUT "$t\n"; close(OUT); --------------------------------------- (other.html は実際にはありませんが、ここでは関係ないですよね) document.writeln なども試してみましたが、同じ結果でした。 継続してお答え頂けるようでしたら、よろしくお願いしたいと思います。お手数をお掛けしてすみません。

goku3
質問者

補足

詳しいご説明、ありがとうございました。 今から、教えていただいた方法でテストしてみます。 結果が分かりましたら、また、ご報告に伺います。 取り急ぎ、教えて頂いて、ありがとうございました。

その他の回答 (9)

  • joker_mk2
  • ベストアンサー率100% (1/1)
回答No.10

うーーん、そうですか。。。 javaScriptの実行を切っていると、こちらではこの現象を確認できるのですが。。。 他のPCのブラウザでも同様の現象なのでしょうか?? こういう言い方は好きではありませんが、(どこかに原因があるとは思いますが)環境依存・・・なのかも知れませんね。 またアクセスカウンターなどでは - SSIを利用する方法 <!--#exec cgi="./cgi-bin/counter.cgi" --> - IMGタグを利用する方法 <IMG SRC="./cgi-bin/counter.cgi"> が一般的でしょうか。。 cgi(perl)では「Content-Type image/gif」や「Content-type: image/jpeg」をhttpヘッダーに付加の上、 画像のバイナリを送信してやればよいかと思います。 この場合、必ずしも「SCRIPTタグ」や「javaScript」を使う必要は無いでしょう。 #お力になれず申し訳ありません。 #何か解りましたらまた書き込みます。

goku3
質問者

お礼

ご回答、何度もありがとうございました。 別のCGI/Perlの学習本を入手して読んでいたところ、 教えていただいたような、 「Content-Type image/gif」や「Content-type: image/jpeg」 でのやり方が紹介されていました。 当方、CGIは初めてですが、Perlは 数年来、PG言語として 使っておりまして、なんとか新しい分野に活かせないかなと思い、 html側からは単にCGIをモジュールとして呼び出す簡単な構造で、 CGIの中で処置をガリガリ書くような仕組みに出来たらなという ところから、質問にあがりました。 何度もお手数をお掛けしており、ひょっとして、まだ何かを調べて 頂いていたかも知れませんが、この件、いったん凍結とさせて頂いて、 もう少し、具体的な質問が出れば、再度上げたいと思います。 ありがとうございました。感謝いたします。

  • joker_mk2
  • ベストアンサー率100% (1/1)
回答No.9

現象を確認しました。 javaScriptの実行が無効になっていますね。 「インターネットオプション」の「セキュリティ」タブから インターネットを選択の上、「レベルのカスタマイズ」ボタンを押してください。 「スクリプト」項目以下の「アクティブスクリプト」が「無効にする」なっているはずです。 「有効にする」を選択するか、問題なければ「リセット」ボタンを押して 「アクティブスクリプト」が「有効にする」となっていることを確認してください。 「インターネットオプション」を終わらせて(ieの再起動は必要なし)、 再度、test.htmlを要求すると期待通りの動きをするはずです。 いかがでしょう???

goku3
質問者

お礼

色々と見ていただいて恐縮です。ありがとうございます。 つまるところ、環境設定の問題のようですので、 やはり、今回のような仕組みを作っても、アクセスされる方によっては期待する結果が得られない場合もあるということで、良くない構造という結論でしょうか。 フォルダ名から推察頂けたかと思いますが、今回は、アクセスやダウンロードのカウンタを最終的には実行させて、 その収集結果を、場合によって、異なる表示方法で出力させるようなことをしたかったことになります。 (最初にきちんと説明できずに申し訳ありませんでした) .cgiを直接アクセスするような仕組み(htaccess)とかにする方が素直でしょうか。 延々と疑問形の結びになってしまいまして、厚かましく申し訳ありません。

goku3
質問者

補足

何度もすみません、聞いている私の方が書き込みが遅くて恐縮です。 インターネットのセキュリティの設定ですが、ベタですべて書きますと、 ・ActiveXコントロールとプラグインの実行=有効 ・ActiveXコントロールに対して自動低にダイアログを表示=無効 ・スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行=無効 ・スクリプトを実行しても安全だとマークされているActiveXコントロールの初期化とスクリプトの実行=有効 ・バイナリビヘイビアとスクリプトビヘイビア=有効 ・署名済みActiveXコントロールのダウンロード=ダイアログ表示 ・未署名のActiveXコントロールのダウンロード=無効 ・Javaの許可=安全性-高 ・Javaアプレットのスクリプト=有効 ・アクティブスクリプト=有効(になっていました。もともと) ・スクリプトによる貼り付け処理の許可=有効 ・IFRAMEのプログラムとファイルの起動=ダイアログ表示 ・InternetExplorerWebbrowserコントロールのスクリプトの許可=無効(★) ・UserDataの常設=有効 ・Webページが、制限されたプロトコルをアクティブコンテンツに使用することを許可する=ダイアログ表示 ・サイズや位置の制限なしにスクリプトでウィンドウを開くことを許可する=無効 ・ソフトウェアチャンネルのアクセス許可=安全性-中 ・デスクトップ項目のインストール=ダイアログ表示 ・ドメイン間でのデータソースのアクセス=無効 ・ファイルのドラッグ/ドロップ、またはコピー/貼り付け=有効 ・ページの自動読み込み=有効 ・ポップアップブロックの使用=有効 ・より権限の少ないWebコンテンツゾーンのWebサイトがこのゾーンに移動できる=有効 ・暗号化されていないフォームデータの送信=有効 ・異なるドメイン間のサブフレームの移動=有効 ・拡張子ではなく、内容によってファイルを開くこと=有効 ・既存のクライアント証明書が1つ、または存在しない場合の証明書の選択=向こう ・混在したコンテンツを表示する=ダイアログ表示 ・ファイルのダウンロード=有効 ・ファイルのダウンロード時に自動的にダイアログを表示=無効 ・フォントのダウンロード=有効 以上のような設定になっていました。 (★)の設定も有効に変えてやってみたのですが、状況は変わりませんでした。 カスタム設定はもともと「中」でした。→リセットを押してOKとしてからやり直してみましたが、同じでした。。。

  • joker_mk2
  • ベストアンサー率100% (1/1)
回答No.8

先ほどレスで頂いたコード(html, perl)を元にテストしてみましたが、 こちらでは問題なくリンクの表示、またtmpの生成も確認しました。 javaScriptの実行を無効にしていませんか?? またブラウザキャッシュをご覧になってませんか?? test.htmlを呼び出す際、念のためCtrl+F5で再表示してしてみてください。 # 連投ですいません。。。

goku3
質問者

補足

何度もご丁寧にありがとうございます。 ブラウザ(ie.6/Win-XP)のオプションですが、 ・Java(Sun)<applet>にJRE 1.6.0_11を使用にチェック ・Microsoft VMのJava JITコンパイラの使用にチェック ・Javaコンソールの使用がoff ・Javaのログの使用がoff となっています。 Ctrl+F5を押しても何も表示されない(真っ白なままな)状況は変わりませんでした。 ブラウザの下段枠のステータスバーには、黄色い▲のビックリマークと、「実行しましたが、ページでエラーが発生しました。」が一瞬表示され、 最後に、「ページが表示されました。」のメッセージが出ています。 遅くなりすみません。取り急ぎ、ご連絡しておきます。

  • joker_mk2
  • ベストアンサー率100% (1/1)
回答No.7

ブラウザからhttp://server/counter/test2.cgiを直接呼ぶとファイルダウンロードになろうかと思います。 ファイルをダウンロードしてメモ帳で表示してみてください。 内容に「document.write('<A HREF=\"other.html\">てすと</A>');」の記述があればcgiの出力は問題ないでしょう。 cgiの実行エラーである場合も考えられますが、まずはご確認ください。

goku3
質問者

お礼

ご回答ありがとうございました。遅くなりました。 どうも、何か私の環境の設定が良くないようですね。 そのことは、つまり、今回の仕組みを作っても、 実行される環境によっては期待する結果が得られないことが あるということになりそうです。 ただ、今回、意図した動きにならない根本原因について、もし分かれば幸いです。 お時間ございましたら、よろしくお願い致します。

goku3
質問者

補足

ブラウザ(ie6/Win-XP)のアドレス欄に ---------------------------------------- http://server/counter/test2.cgi ---------------------------------------- を打ち込んで、リターンすると、 ---------------------------------------- Content-Type: application/x-javascript document.write('てすと'); ---------------------------------------- と表示されました。てすとの文字部分は、ハイパーリンクになっていて、 counter/other.html を指しています。 このとき、ブラウザで「表示」→「ソース」とすると、 ---------------------------------------- Content-Type: application/x-javascript document.write('<A HREF="other.html">てすと</A>'); ---------------------------------------- がメモ帳で見えています。

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.6

HTMLから scriptタグで cgi をコールして、cgiスクリプトから出力した文字列を表示させるのなら、cgiスクリプト側から、表示させたい文字列を、   document.writeln('表示させたい文字列') というように、javascriptの構文で出力してやらないといけません。 ただし、文字列の内容によってはエスケープする必要があります。

goku3
質問者

お礼

事務局から連絡で、投稿規制に抵触があったとのことです。 (ご回答原文改訂されたとのことでした) 申し訳ございませんでした、あらためて、お礼させて頂きます。 ご回答ありがとうございました。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.5

回答 No.4:joker_mk2 さんへ。 良い回答ありがとうございます。 私自身 回答No.2で「CGIなどWebサーバ上で動作するサーバサイドスクリプトを実行するタグではありません」と書きながら, 「実はtest.cgiは実行されている(a.tmpが作成されたのがその証拠)。この場合のJavaScriptの入手先は静的ファイルの *.js じゃないんだ」と言えなかったことが気がかりでした。 No.4のように説明すればいいのですね,たいへん参考になりました。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

とっても、おかしいです。 <script>は Scripts in HTML documents (ja) http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/scripts.html#edef-SCRIPT で、スクリプトであることを示す要素ですよね。 cgiから出力されているのはスクリプトですか????

goku3
質問者

お礼

大変参考になるページをご紹介頂いて、ありがとうございました。 実際には、私が最初に書いた例文の冒頭、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> については、CGI学習本の一部を参考に書いただけのもので、 意味すら分かっていませんでした。 cgiでは、htmlの構文を吐き出して、その内容を親(と呼んで良いか定かではありませんが)html内に取り込んで、 その親html内の一部として表示させたかったのです。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

<script>タグは,JavaScriptなどWebブラウザ上で動作するクライアントサイドスクリプトを実行するタグであり,CGIなどWebサーバ上で動作するサーバサイドスクリプトを実行するタグではありません。 もし仮に,質問者のイメージしている(だろう)ことができたとしても,生成されるHTMLは次のように,間違った入れ子になってしまうのではないですか。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>HTML TEST</title> </head> <body>   Content-type:text/html; charset=shift_jis      <html lang="ja">   <head>   <title>TITLE</title>   </head>   <div align=center>   <a>テスト1</a><br>   <a>テスト2</a><br>   </div><br>   </body></html> </body> </html> 質問者は何がしたいのでしょう? Web利用者には .cgi であることを知らせたくない,Web利用者からは .html にしか見えないが 実は Webサーバ側では CGI でHTMLを生成している,そういう環境を作りたいということでしょうか。

goku3
質問者

お礼

ご回答遅くなり、すみませんでした。まだCGIというものも勉強中の身で、それほど深く考えていたわけではなく、 出来れば、ブラウザではhtmlのページを選択させておいて・・・ ああ、つまり、おっしゃって頂いた 「Web利用者からは .html にしか見えないが 実は Webサーバ側では CGI でHTMLを生成している」 ということをしたかっただけでした。 それで実際は、示して頂いたような変な状況になってしまうのですね。 お手数をお掛けいたしました。

  • LZ_1111
  • ベストアンサー率57% (4/7)
回答No.1

もし以下のように記述されていた場合、srcで指定された内容がブラウザに表示されると思いますか? <script src="http://xxx/test1.js"></script> 最終的にどのようなものを要求しているか解らないのでこれ以上のアドバイスはできません。

goku3
質問者

お礼

ご回答ありがとうございました。 お礼が遅くなりすみません。 また、質問が的を射ておらず、伝わらなかったようです。 CGIを直接ブラウザから呼んでも、htmlの中にCGI呼び出し部分を書いて、そのhtmlをブラウザから呼んでも CGIが吐き出す結果を同じように画面に表示させたかったのでした。

関連するQ&A

  • CGIで出力するテキスト内容をhtml側で表示する方法の2

    前回、 http://okwave.jp/qa4532069.html で質問させて頂いた者です。 その後、joker_mk2さんに教えていただいた方法を使って、下記のように表示できるようになりました。 (前回、ブラウザの設定を色々変えた後、再起動で動くようになったようです) 他のページも参考にして、html側の書き方を変えてみましたが、この方法でもOKでしょうか。 (動いているから、結果オーライかも知れないのですが) 1.CGIスクリプト(Perlで記述)を用意... test.cgi ----------------------------------------------------- #!/usr/bin/perl my $val = 123; print "Content-type: application/x-javascript\n\n"; print "document.write('<p>変数の値=$val</p>')"; ----------------------------------------------------- 2.htmlを用意 ... test.html ----------------------------------------------------- <html> <head> <title>test</title> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> </head> <body> <script language='JavaScript' src="http://xxx/CGI/test.cgi"> </script> </body> </html> ----------------------------------------------------- 上記のとき、動作として、 ◆ブラウザからhtml(http://xxx/test.html)にアクセスした場合、 ブラウザ上に 「変数の値=123」 と表示された。 (元々、やりたかったのは、こういうことでした。ありがとうございました) ◆ブラウザからCGIのパス(http://xxx/CGI/test.cgi)に直接アクセスした場合、ファイルのダウンロード確認ダイアログが出た。 ファイルをダウンロードして中身を見ると、 「document.write('<p>変数の値=123</p>')」 と書かれていた。 以上です

    • 締切済み
    • CGI
  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • CGI
  • 1つのhtmlページにたくさんのCGIを表示したい

    1つのhtmlページにたくさんのCGIを表示したいのですができますか? "Content-type: text1/html\n\n" /* ** CGI版のhello.c(HTML仕様) */ #include <stdio.h> main(){ printf("Content-type:1/html\n\n"); /* ここから HTML でお馴染みのタグ */ <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> /* あいうえお */ "Hello C World!<BR>\n" "</BODY>" "</HTML>" } みたいなCGIを入れたいのですが。

    • 締切済み
    • CGI
  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI
  • 以下のようなものを作ったのですが、cgiによるjavascript出力

    以下のようなものを作ったのですが、cgiによるjavascript出力がうまくいきません。 理由がわからず困っています。 【http://www.gran-fenix.com/nao_archive/test/index.htm】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>テスト</title> <script type="text/javascript"><!-- var pageseq = 0; //--></script> <script src="./trick/test.cgi"></script> </head> <body style="background-color:white"> <noscript><p style="color:deeppink;font-weight:bold"> 【注意】 JavaScript が無効になっています。 </p></noscript> <br> <h1 style="font-size:200%;font-weight:bold;color:maroon"> <script type="text/javascript">document.write(page_title[pageseq]);</script> </h1> <hr> </body> </html> 【http://www.gran-fenix.com/nao_archive/test/trick/test.cgi】 #!/usr/local/bin/perl $jscr = 'test.txt'; $scr_body = ''; open (JSCR "<$jscr") || die "Can't open the JavaScript file\n"; while (<JSCR>) { $scr_body .= $_; } close (JSCR); print "Content-Type: text/javascript\n\n"; print <<"SCR"; $scr_body SCR 【http://www.gran-fenix.com/nao_archive/test/trick/test.txt】 var page_title = new Array(); page_title[0] = "テスト成功"; 具体的には、test.txtにある「テスト成功」の文字がHTMLのh1タグ部分に出力されません。 HTMLで、scriptタグのsrcを、test.txtと同じ内容のJSファイル test.js(場所も同じディレクトリ)にしてみると成功するので、原因はcgiにあると思うのですが、どこがおかしいのかわかりません。 なお、test.cgiのパーミッションは755、test.txtのパーミッションは644です。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIの中にJAVA Script

    CGIプログラムはまったくの初心者です。 perlでCGIプログラムを組んで、HTMLを書き出すときに Java Scriptもいっしょに書き出すことはできますか? print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; ---この間に入れたいのですが・・・--- print "</head>\n"; print "<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color background=$bg_gif>\n"; Java Scriptの menu_0.addMenuItem("ショップ案内","location='shop.html'"); 等を入れるときに 「"」や「;」はどういう風に表現すればうまくいくのでしょうか。 Java Script以外のタグの中の<font size="2">などは「"」をとれば 大丈夫なのは知っていますが、Java Scriptで「"」や「;」をとってしまうと 動作しなくなりました。

  • CGIスクリプトの結果が表示しない

    windows2000 proffesinal sp.4でActivePerl5.8.8..819・・・・、Apache2.054の環境で"10日で覚えるPerlCGI"を使用。IEバージョンは5でページを「表示できません」のエラーがときたまでる。 上記環境でApacheは正常に動作。TeraPad使用。CGIスクリプト1-2.cgiとして作成。 #! C:/perl/bin/perl # CGIヘッダーの出力 print "Content-type: text/html\n\n"; print "<DOCTYPE HTML PUBLIC \n-//W3C//DTD HTML4.01//EN\">\n"; print "<html>\n"; print "<head><title>Hello HTML</title></head>\n";# htmlの出力 print "<body><p>こんにちわ。これはHTML文書の例です。</p></body>\n"; print "</html>\n"; 上記スクリプトを1-2.cgiとしてApaghe2-htdocs-tendaysに保存 IEのURLに:: http://127.0.0.1/tendays/1-2.cgiと入力・・・そして下記の表示が出ました。 #! C:/perl/bin/perl# CGIヘッダーの出力print "Content-type: text/html\n\n";# htmlの出力print "\n"print こんにちわ。これはHTML文書の例です。 \n";print" "; 原因を教えてください。windows7 64bit でもこのようにスクリプトだけが表示されたことがあり(perl,Apacheのバージョンも最近のものを使用)その時は、相談室にお世話になりながら自分の 未熟さにあきれお尋ねしなかったのですが、最後HTML5を習えばのお答えで、今。参考書を買って人通り見たのですが、フォームメールや掲示板はやはり裏でCGIが動作しているので。また古いパソコンで始めたのでしたが最初からつまずきました。doreamweaber もあるのですが、能力がないのに 人様の作成したフりーソフトをスクリプトの意味が分からず貼り付けるのはいささか情けないかなと 考えています。最終的にはそうなると思っていますが、できればsendmailを使用したCGIスクリプトとかんがえています,が。とりあえず一歩一歩づつと思っています。10年以上前に作成したホームページをアップしっぱなしです。メールが送信できません。当時のプロバイダーがocnでその時提供されたもので裏でCGIが動いているなんて知りませんでした。今biglobeです。 自分の作りかけのホームページのURLは http://www7b.biglobe.ne.jo/~asunarohei/indexhei.htmlです。メールのスクリプトを貼り付けたいのです。それと掲示板をリンクさせたいです。 わからないことだらけで、ご迷惑かけますがよろしくお願いします。

  • 初歩的なCGIですが

    #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>perlテスト</TITLE></HEAD>\n"; print "<BODY>\n"; print "本文1<BR>\n"; print "本文2<BR>\n"; print "</BODY>\n"; print "</HTML>\n"; 上記プログラムをFTPサーバにアップロードして、perlプログラム内では正しい結果が出たのですが、ブラウザ上で確認したら、htmlのタグが除かれた状態のソースが出てきました。  正しい結果をブラウザ上で表示させるにはどうすればいいのでしょうか?教えてください。

    • ベストアンサー
    • CGI
  • テキストファイル内の変数を展開して出力したい

    テキストファイル内に変数を書いておいて、出力時に その変数を展開させる方法を教えてください。 具体的には、[test.txt]を[出力]のようにしたいのです。 ためしに[test.cgi]を作ったのですが[test.txt]の内容がそのまま出てきてしまいました。 [test2.cgi]ができるなら、[test.cgi]でもできると思っていたのですが… [test.cgi] #!/usr/local/bin/perl $moji="OK"; print "Content-type: text/html\n\n"; open(IN, 'test.txt'); while (<IN>) { print "$_"; } close(IN); exit; [test2.cgi] #!/usr/local/bin/perl $moji="OK"; $naka="<HTML><BODY>$moji</BODY></HTML>"; print "Content-type: text/html\n\n"; print "$naka"; } close(IN); exit; [test.txt] <HTML><BODY>$moji</BODY></HTML> [出力] <HTML><BODY>OK</BODY></HTML>

    • ベストアンサー
    • Perl
  • CGIでテキストボックスの内容によって条件分岐

    CGI超初心者です。 htmlファイルに設置したテキストボックスの値によって CGIで表示させる内容を変えたいです。 ネットで検索してコードを作成してみたのですが うまくいきません。 どのように修正すればいいのでしょうか? test.html---------------------------------------- <FORM action="test.cgi" method="POST"> 変数を入力 <INPUT type="text" name="hen"> <INPUT TYPE="submit" VALUE="送り"> </FORM> ------------------------------------------------- test.cgi----------------------------------------- #!/usr/local/bin/perl $h = $FORM{'hen'}; print "Content-Type: text/html; charset=Shift_JIS\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if ($h > 50) { print "<p>変数hの内容は50より大きいです。</p>\n"; } else { print "<p>変数hの内容は50より小さいです。</p>\n"; } print "</body>\n"; print "</html>\n"; exit; ------------------------------------------------- テキストボックスに、50以上の数字を入力しても、50以下の数字を入力しても どちらも 「変数hの内容は50より小さいです。」 と表示されてしまいます。 よろしくお願いいたします! ※ 前回の質問(http://okwave.jp/qa/q8179935.html) より、CGIは使わない方向で検討中ですが CGIに途中まで足をつっこんでしまい、 気になったので質問させていただきました。

    • ベストアンサー
    • CGI