• ベストアンサー

CGIソース中のHTMLタグですが。。。

print "<input type=\"text\" value=\"name\" />"; とか print "<hr />\n"; などの 「/」 の役割がわかりませんが、必要でしょうか。 「/」 が無くても動作しているようでしたが。。。 本当に初歩的で失礼な質問かも知れませんが、 教えていただければ本当にありがたいです。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

XHTMLだと必要。 XHTMLは、yatokesaさんが既に回答してます「XML」をベースに、HTMLの仕様を再定義した、後継仕様です。 XMLは、必ず開始タグ(<h1>とか。)と終了タグ(</h1>とか、)が対にならないといけませんが、空要素(開始タグと終了タグの間に何も入れちゃダメ。)については、 <e></e> と書く代わりに、 <e /> という書き方も認めてます。 で、XHTMLでは、<br>や<img>などを、<br />や<img />と書くようになっている、という事です。

参考URL:
http://www.atmarkit.co.jp/fxml/askxmlexpert/022xhtml/22xhtml.html
cgi_syoho
質問者

お礼

XHTMLとXMLの解説までしていただきまして、 どうもありがとうございます。 やはりこれらの言語(スクリプト)もこれからは 勉強した方がよいのでしょうか。 お蔭様でまた一つ知識が深まりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

XML がそうですね。 閉じタグのないタグは /> で終わらなければならないので。 <br/> とか

cgi_syoho
質問者

お礼

XMLの閉じタグですね。 私が勉強している本にはそのへんの言及が なかったのです。 よくわかりました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • FORM ACTION~POST使用時について

    こんにちは。お世話になります。 cgiファイルから、FORM ACTION~POST⇒submitで自分自身を呼び出す時に、INPUT TYPE=\"text\"を11個間に入れると呼び出せません。 (10個の場合はうまくいきます) FORM ACTION~POSTは文字数制限がないと、本を見てもかいてあるのですが、なにか理由があるのでしょうか。 ご存知の方、ご教授願えたら幸いです。 よろしくお願いいたします。 抜粋したソースを下記に記します。 ------------------------------------------------------------- #障害対応情報項目テキストボックス print "<H5>【障害対応情報項目】</H5>\n"; print "<FORM ACTION=\"../cgi-bin/serch_e-001.cgi\" METHOD=\"POST\">\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-2\" VALUE=\"$$selectdata[0][7]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-3\" VALUE=\"$$selectdata[0][8]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-4\" VALUE=\"$$selectdata[0][9]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-5\" VALUE=\"$$selectdata[0][10]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-6\" VALUE=\"$$selectdata[0][11]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-7\" VALUE=\"$$selectdata[0][12]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-8\" VALUE=\"$$selectdata[0][13]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-9\" VALUE=\"$$selectdata[0][13]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-13\" VALUE=\"$$selectdata[0][18]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-14\" VALUE=\"$$selectdata[0][19]\" SIZE=30>\n"; print "<INPUT TYPE=\"text\" NAME=\"S1-15\" VALUE=\"$$selectdata[0][19]\" SIZE=30>\n"; print "<INPUT TYPE=\"submit\" NAME=\"button\" VALUE=\"新規検索\">\n"; print "<INPUT TYPE=\"submit\" NAME=\"button\" VALUE=\"更新\">\n"; print "<INPUT TYPE=\"hidden\" NAME=\"no\" VALUE=\"$$selectdata[0][0]\">\n"; print "</FORM>\n"; ------------------------------------------------------------

    • ベストアンサー
    • Perl
  • if文を入れるとcgiが動きません。【Ruby】

    下記のプログラムは正常動作します。 #部、name1に文字列が入っていたら動作するプログラムを 追加すると、ブラウザが白紙になります。エラーなしです。 間違いを教えてください。このファイルはhoge.cgiです。 #!/usr/bin/ruby print "Content-type: text/html\n\n" require "cgi-lib" input = CGI.new #if name1 #print "name is ", name1 #end print <<-"EOB" <form method="POST" action="./hoge.cgi"> name<input type="text" name="name1" size="10"> <input type="submit" value="send"> </form> </body> </html> EOB

  • 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
  • CGIがうまくいかないので困っています

    フリーソフトのCGIを利用してメールフォームを設定しましたが、うまくいきません。困っていますのでどなたか助けてください。 送信した際にこのような表示があり、確かに受信できますが、一部しか表示しません。 さくらレンタルサーバー利用です。 *は自分のアドレス Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 To: ****@***.ocn.ne.jp From: ****@***.ocn.ne.jp Subject: HPからのお問い合わせ message = name name以外にも入力箇所がいくつもあるのに、message=とnameしか送られてきません。 htmlは次の通りです。 <form action="mail/mail.cgi" style="font-weight : normal;color : rgb(102, 102, 102);" method="post" enctype="text/plain"> <h3>お問い合わせフォーム</h3> <p>*は入力の必須項目です。</p> <table> <tbody> <tr> <th>お問い合わせ内容*</th> <td><textarea name="message" class="l" cols="40" rows="12"></textarea></td> </tr> <tr> <th>お名前(漢字)*</th> <td><input type="text" name="name" class="m"></td> </tr> <tr> <th>お名前(フリガナ)*</th> <td><input type="text" name="kana" class="m"></td> </tr> <tr> <th>E-Mail*</th> <td><input type="text" name="email" class="l"></td> </tr> <tr> <th>電話番号(半角)*</th> <td><input type="text" name="tel" class="l"></td> </tr> <tr> <th>FAX番号(半角)</th> <td><input type="text" name="fax" class="l"></td> </tr> </tbody> </table> <input type="submit" value="  送信  " class="button"> <input type="reset"><input type="hidden" name="to" value="******"></form> <hr> CGIは #!/usr/local/bin/perl # ★ perlのパス名 # ★ 送信先メールアドレス $mailto = '******'; # ★ サブジェクト(件名) $subject = 'HPからのお問い合わせ'; # ★ メール送信コマンド $mailcmd = '/usr/sbin/sendmail'; # ★ -fオプションの有無 $usefoption = 1; # ★ 送信結果メッセージ(ヘッダ) # <<END_OF_DATA ~ END_OF_DATA の間を好みにあわせて変更してください。 $header = <<END_OF_DATA; <html> <head> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"> <title>メール送信結果</title> </head> <body> <h1 style=\"color:#36f;font-size:14px;\">メール送信結果</h1> <hr> <p>下記内容でメールを送信しました。ありがとうございました。</p> <hr> END_OF_DATA # ★ 送信結果メッセージ(フッタ) # <<END_OF_DATA ~ END_OF_DATA の間を好みにあわせて変更してください。 $footer = <<END_OF_DATA; <hr> <a href="../index.html">[戻る]</a> </body> </html> END_OF_DATA #==================================================================== # 自己診断機能。 #==================================================================== # メール送信がうまく動作しない時に、 # http://~/~/wwwmail.cgi?test の形式で呼び出してください。 if ($ENV{'REQUEST_METHOD'} eq "GET") { print "Content-type: text/html; charset=Shift_JIS\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>WwwMail自己診断</title>\n"; print "</head>\n"; print "<body>\n"; print "<p>CGIは正常に動作しています。</p>\n"; unless (-f $mailcmd) { print "<p>$mailcmd がありません。</p>\n"; } unless (-x $mailcmd) { print "<p>$mailcmd が実行可能ではありません。</p>\n"; } unl

    • ベストアンサー
    • Perl
  • Perl CGI -入力フォーム-

    Perlを始めたばかりの初心者です。 Perlの中にフォームを入れたいのですが、エラーが出てしまいます。 現在は、ローカルで作動させています。 #! c:/perl/bin/perl print "Content-type: text/html\n\n"; print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"; print "<head><title>TEST</title></head>\n"; print "<body>\n"; print "<p><input type="text" name="name"></p>\n"; print "</body>\n"; print "</html>"; 【print "<p><input type="text" name="name"></p>\n";】この記述がエラーの対象行となっています。 inputを使用する場合は他にも記述が必要なのでしょうか? 宜しくお願いします。

  • 複数のデータをPOSTで渡す場合について(ソース一部省略)

    教えてくださいm(。≧Д≦。)m PHP初心者です。。 ----------------------------------------------------------- <FORM action="<? echo $PHP_SELF; ?>" method="POST"> print "お名前:<BR>\n"; print "<input type=\"text\" name=\"handle\" size=\"16\" maxlength=\"30\" value=\"$handle\"><BR>\n"; ↓この表示も違うと思うのですが…-------- print "性別:<BR>\n"; print "<input type=\"radio\" name=\"sex[0]\" value=\"$sex[0]\" checked>男性<BR>\n"; print "<input type=\"radio\" name=\"sex[1]\" value=\"$sex[1]\">女性<BR>\n";------------ print "PRポイント:<BR>\n"; print "<input type=\"text\" name=\"body\" size=\"16\" maxlength=\"30\" value=\"$body\"><br><br>\n"; <input type=\"submit\" value=\"次の人\"></CENTER> print "<input type=\"hidden\" name=\"handle\" value=\"" . $_POST['handle'] . "\">\n"; print "<input type=\"hidden\" name=\"sex\" value=\"" . $_POST['sex'] . "\">\n"; print "<input type=\"hidden\" name=\"body\" value=\"" . $_POST['body'] . "\">\n"; ---------------------------------------------------------------- ↑この前に「人数は?」というSELECTで数字を選ぶものがありその人数に合わせて「次の人」を押すと入力ページが繰り返されています。 例えば3人を選ぶと3回入力画面が続くわけですが、その後そのデータを引継ぎたいのです。 一人目 名前の表示<br>PRの表示<br>(女性を選択した場合)全ての男性の名前の表示 二人目、三人目も同じように表示したいのです。。 どのように作ればいいでしょうか?m(。≧Д≦。)m

    • ベストアンサー
    • PHP
  • POSTで配列のデータを渡す方法は?

    初歩的な質問で申し訳ございません。配列でデータを入力し、POSTで配列のデータを渡す方法を知らなくて困っています。いろいろ調べましたが、見つかりません。 だれか、教えてください。 ..... &ReadParse(*in); for ($i = 0 ; $i <=10 ; $i++){    $data[$i] = $in{'data[$i]'}; } sub main { 。。。以下修正部分・。。。 print "<form method=\"POST\" action=\"$userpro\">"; print " <input type=\"hidden\" name=\"mode\" value=\"miss1\"><p>"; print " <input type=\"text\" name=\"data[1]\" size=\"20\" value=\"$data[1] \">"; print " <input type=\"text\" name=\"data[2]\" size=\"20\" value=\"$data[2] \">"; print " <input type=\"text\" name=\"data[3]\" size=\"20\" value=\"$data[3] \">"; ...... print " <p><input type=\"submit\" value=\"修正\" name=\"B1\"></p>\n" ; print "</form>\n" ; ・・・・ } #Submit後実行される関数 sub miss1 { print "Content-type: text/html\n\n"; for ($i = 0 ; $i <=10 ; $i++){ print "$i-$data[$i]<br>"; } exit; } 結果は 0-空(空白) 1-空(空白) 2-空(空白) 。。。 にです。 何が間違っているでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGI初心者です

    sub html でフォームに入力してもらい、 sub kekka で入力情報を確認し、 sub shori でテキストファイルに登録。 というプログラムを考えているのですが、 フォームから入力されたデータが入った変数$in{'name'} が、sub shori に移ると消えてしまいます。 いろいろ試行錯誤したのですが分かりませんでしたので 教えていただけたらと思います。 以下がサンプルのソースです。 #!/perl/bin/perl require './jcode.pl'; require './cgi-lib.pl'; &ReadParse; if($in{'action'} eq "set"){&kekka;} elsif($in{'action'} eq "sss"){&shori;} else{&html;} sub html{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト1</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n <INPUT type=hidden name=action value="set">\n 名前<br><input type=text name="name" size="30" MAXLENGTH="30"><br>\n <input TYPE="submit" value="確認"><INPUT type="reset" value="リセット">\n </form>\n </body>\n </html>\n EOM } sub kekka{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト2</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n <INPUT type=hidden name=action value="sss">\n name = $in{'name'} <input TYPE="submit" value="登録">\n </form>\n </body>\n </html>\n EOM } sub shori{ print "Content-Type: text/html\n\n"; print <<EOM <html>\n <body>\n <h1>CGIテスト3</h1>\n <form ACTION="./sample.cgi" METHOD="POST">\n name = $in{'name'} </form>\n </body>\n </html>\n EOM }

    • ベストアンサー
    • Perl
  • チェックボックス(CGI)のズレをなくすにはどうすればよいでしょうか?

    現在メールフォームを勉強中です。チェックボックスの項目を1つだけ設定していますが、チェックを外せば下の項目が上に一段ズレて送信されてきます。 チェックが外されていてもその項目だけ“空白”もしくは“チェックなし”とかに出来ますでしょうか?お手数ですが、ご教授ください。 【html側】 <form method="POST" action="mail.cgi"> <input type="text" name="01"> <input name="checkbox" type="checkbox" value="on"> <input type="text" name="02"> <input type="text" name="03"> <input type="submit" value="確認画面"> </form> 【cgi側】 $form0 = "01"; $form1 = "チェック"; $form2 = "02"; $form2 = "03"; if($form0 eq ""){ $form_input0 = ""; } else { $form_input0 = "<p class=\"text\">$form0 = $VALUE_DATE[0]</p>";} if($form1 eq ""){ $form_input1 = ""; } else { $form_input1 = "<p class=\"text\">$form1 = $VALUE_DATE[1]</p>";} if($form2 eq ""){ $form_input2 = ""; } else { $form_input2 = "<p class=\"text\">$form2 = $VALUE_DATE[2]</p>";} if($form3 eq ""){ $form_input3 = ""; } else { $form_input3 = "<p class=\"text\">$form3 = $VALUE_DATE[3]</p>";} <FORM method="post" action="mail.cgi"> <INPUT type="hidden" name="$form0" value="$VALUE_DATE[0]"> <INPUT type="hidden" name="$form1" value="$VALUE_DATE[1]"> <INPUT type="hidden" name="$form2" value="$VALUE_DATE[2]"> <INPUT type="hidden" name="$form3" value="$VALUE_DATE[3]"> <INPUT type="submit" value="この内容で送信する"></FORM> $mbody .= "\n"; $mbody .= "フォームより以下の内容が送信されました。\n"; $mbody .= "\n"; $mbody .= "=============================================================\n"; $mbody .= "\n"; $mbody .= "・$form0:$VALUE_DATE[0]\n"; $mbody .= "\n"; $mbody .= "・$form1:$VALUE_DATE[1]\n"; $mbody .= "\n"; $mbody .= "・$form2:$VALUE_DATE[2]\n"; $mbody .= "\n"; $mbody .= "・$form3:$VALUE_DATE[3]\n"; $mbody .= "=============================================================\n"; $mbody .= "\n"; ソースは文字制限の関係で省略しています。解りにくいですが、宜しくお願いします。

    • 締切済み
    • CGI
  • HTML側データの摘出方法

    フォームメールを作っているのですがHTML側のデータが希望通りに摘出出来ません。 【C G I 側 一部】 push(@DATA_N,$name); push(@DATA_V,$value); foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; } } 【HTML側】 <BODY> <h1>WEBFORM用サンプルフォーム</h1> <FORM method="POST" action="webform.cgi"> <INPUT type="hidden" name="location" value="http://abc.com/123.htm"> <INPUT type="hidden" name="subject" value="フォームメール"> 質問:<INPUT size="50" type="text" name="質問"><BR> 名前:<INPUT size="50" type="text" name="Yourname"><BR> メール:<INPUT size="50" type="text" name="Email"><BR> <BR> <INPUT TYPE="submit" VALUE="確認"> <INPUT TYPE="reset" VALUE="リセット"> <p> <input type="checkbox" name="c_copy" value="on" checked> 送信内容のコピーを表示<br> <input type="checkbox" name="no_check" value="on"> 内容確認画面を出さないで送信する </FORM> </BODY> 上記の設定で【質問】【名前】【メール】の項目と値が全て送られて来るのですが、送られてくる順番を【名前】が先頭であとはHTML側の順番通りにしたいと思います。 以下のように行が何番目かを指定すれば結果は得られるのですが複数のHTMLに対応させる為【名前】項目が何番目に来るかが指定出来ません。 foreach (1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; } } そこでHTML側 名前:<INPUT size="50" type="text" name="Yourname"> のname="Yourname"部分を使って指定出来ないかとあれこれ試してみますがうまくいきません。 有識者の方々のご指導いただければ幸いです。何卒宜しくお願いします。

    • 締切済み
    • CGI