dポイントプレゼントキャンペーン実施中!

CGIの勉強中ですが、そのBBSの完成スクリプト内の
HTMLの中の記述で、
inputtype=hiddenというのが、ありました。
この意味は難なのでしょうか?

<input type=hidden name=mode value="regist">

という一行です。
hiddenの両脇になぜダブルクオテーションが必要でないのかということがまずわかりません。

宜しくお願いします。

A 回答 (4件)

まず、ダブルクオーテーションの必要性について回答します。



HTMLのタグはスペースを単語と単語を分けるセパレータとして使用しています。

タグの属性などを指定する場合、パラメータ=値という形で表現し、値にスペースが含まれる場合を想定しています。
例えば値がI LOVE YOUだとすると、値の両側にダブルクオーテーションが無いと変数にはIしか入らない事になります。(例1参照)
そういった事を防ぐ為にダブルクオーテーションが必要になります。(例2参照)
逆に言えば、値にスペースが含まれないのであれば必要ない事になります。

余談ですが、受信する側(JavaScriptやCGI)にも依存するのですが、スペースの代わりに%20やを使えば両側のダブルクオーテーションも不要になりますが、ダブルクオーテーションで囲んだ方が文字数が少ないから楽だとは思います。

それでは実際のタグをみてみましょう。

<input type=hidden name=mode value="regist">

nameは変数名
valueは値
typeはinputタグの種類を示しておりhiddenは隠し属性という意味です。ユーザからは隠されているのでmode変数を変更できないという事です。
typeに指定できるものは決められており、text、password、file、checkbox、radio、hidden、submit、reset、button、imageとどれもスペースを含んでいません。
逆にvalueに指定できる文字列には規定が無いのでスペースを含む事もありという事です。
またnameは変数名なのでJavaScriptやCGI等で使うのでスペースを含むとプログラムが面倒になる事が予想されるので恐らく使わないでしょう。

value以降を以下の例でダブルクオーテーションの必要性が分かります。

例1)value=I LOVE YOU>

 送信される内容はmode=I
 LOVEやYOUはパラメータの様なものとして認識されてしまいます。

例2)value="I LOVE YOU">

 送信される内容はmode=I LOVE YOU

という事です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

とてもとても本当によくわかりました!!!
わざわざお時間を割いていただいてまで
このようにご丁寧な回答をしてくださってことを
感謝いたします。

hiddenもおかげさまで自分で使いこなせそうです。

ありがとうございました!!

お礼日時:2003/04/20 18:41

隠しフラグ等、送信者にわからないように変数を渡すために使われます。



参考URL:http://tohoho.wakusei.ne.jp/html/input.htm
    • good
    • 0
この回答へのお礼

ありがとうございました。

意味がわかりました。

お礼日時:2003/04/20 18:42

 実際には何も表示されないタイプのINPUTタグですね。


 CGIなどでフォームから変数をプログラムへ渡すとき、入力するユーザーは意識せずに変数を渡すことができます。 
 おそらく質問にかかれているのは掲示板スクリプトか何かの一部だと思います。
 (掲示板の書き込みフォーム部分だと思います。) 

 CGIプログラム側で(ライブラリ cgi-lib.pl を使用時)
 $mode = $in{'mode'} としてあると
 変数 $mode には 値である "regist" が入ります。

 掲示板などの場合、書き込むときや読むだけのときなどモードにわけて処理を分岐していますので、処理モードをプログラム側に伝えるために変数を送ります。
 
 ユーザー側が書き込むときにこういった変数を意識させる必要は全くないので、hiddenのように見えないところでこっそり変数を送っているのです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

modeの意味がわかりました。

本当にありがとうございました。

CGIも少しわかってきたので、一層説明がよくわかりました。

ありがとうございました。

お礼日時:2003/04/20 18:42

わかることだけ。


ダブルクォーテーションは、あってもなくても関係ないです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2003/04/20 18:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!