ダウンロードCGIにて、設置してHTMLの文法テストをしたら
「name= が同じでは、CGI側ではそれらを区別できません。」
ってなったんですけど、動作は正常にするようなのですが、
調べても知識がないせいかどうしたら良いかちょっとわかりません・・・
hidden だから関係ない?と初心者考えですが、文法テストは正しいし
でも不具合が心配なので、誰か教えて下さい <(_ _)>
<input type="hidden" name="sw_aress" value="">
<input type="checkbox" name="sw_aress" value="1">レス数
<input type="hidden" name="sw_ref" value="">
<input type="checkbox" name="sw_ref" value="1">回数
No.4ベストアンサー
- 回答日時:
長文になってしまいました。
m(_ _)m該当のサイトの解説文を読みました。
http://openlab.ring.gr.jp/k16/htmllint/explain.h …
> 165
> TYPE=TEXTなどのように、VALUE属性の値が固定的でないものに対して、同じ名前の要素がひとつのFORM内で複数存在すると、CGI側ではそれらを区別できません。
「TYPE=TEXTなどのように」となっていますね。
ですが、CGIはこれらを区別できますので、解説文が間違っているようです。
もちろん、区別しないように作ったり、言語仕様として区別しない物(PHP)もありますが、
HTMLの解説として「できない」と限定して書くことではないと思います。
テキストフィールドの場合にのみ区別しない、という作り方をするのは、
「全て区別しないか全て区別する」よりもはるかに難しいですし、場合によっては不可能です。
> VALUE属性の値が固定的な、TYPE=RADIO/CHECKBOX/SUBMIT/RESET/BUTTON/IMAGEとHIDDENについては警告されません。
このように書かれていますので、hiddenやcheckboxで警告がでるようなら、このチェッカーのバグと思われます。
「hiddenとcheckboxの両方で使っている場合」については言及されていませんので、あながちバグとも言い切れませんが。
質問とは関係ないことですが、
> SUBMITにNAMEがない場合は無効 (If the NAME attribute is not present, this element does not contribute a form field.) だとされています。
調べたところ、HTML2.0でこの定義がされているようですが、HTML4.01やXHTMLではこの定義はありません。
特定のHTML/XHTMLのバージョンだけの内容を、全てのバージョンに適用してしまっているようです。
(このサイトは、こういう不具合や語弊のある書き方が多いです。)
なお、ボタンとしては機能しますが、valueを送信しなくなります。(文法とは関係ありませんが)
さらにHTML2.0の文法書を読んでみると、
http://www.w3.org/MarkUp/html-spec/html-spec_8.h …
「does not contribute a form field」の意味は「無効」ではなく、
HTML4.01と同じ、「サーバーに値を送信しない」の意味で使われていると思います。
> RESETの項目の例より
When you are finished, you may submit this request:
<input type=submit><br>
You may clear the form and start over at any time: <input type=reset>
via: contribute
http://dic.yahoo.co.jp/dsearch?p=contribute&styp …
> CGIの部分も間違っているのか不安なのです・・・難しいですね。
CGIを使用していても、ブラウザが見ているのはそこから出力されたHTMLですので、扱い方法は同じです。
HTMLの文法としては、全く問題はありません。
オリジナルのスクリプトでsw_refやsw_aressを何度も使われているなら、
むしろ複数あることで正常に動作する物と思われます。
非常に詳しく回答して頂きφ(..)メモメモ ありがとうございました。
結果は、何度もテストして判断しようと思いますが
不安が解消できて安心しました ^_^
No.3
- 回答日時:
> 「name= が同じでは、CGI側ではそれらを区別できません。
」これはHTMLチェッカーの指摘ですか?
だとすると、HTMLチェッカーのバグ(不具合)と思われます。
nameが同じでもCGI側でそれを区別するように作らなければなりません。
<select name="sel" multiple size="5">
<option value="1">1</option>
<option value="2">2</option>
</select>
複数の項目を選択できるセレクトフィールドは sel=1&sel=2というように、nameの部分が同じになって送信されます。
CGIスクリプトのドキュメントにそのような但し書きがついているのであれば、
あえて区別しないように作られている可能性もありますので、
同じnameをつけないようにするか、PHPの場合はname="sw_ref[]"のようにブラケットをつけることで対応できるかもしれません。
また、受信やデータの分割はできていても、
分割された複数のデータを複数として扱うように作られていなければ、
(この可能性の方が高いです)
結局不具合として出てくると思いますので、
十分テストしてから使うか、
ともすればこのCGIスクリプトは使わない方が良いかもしれません。
詳しい説明をありがとうございます。
CGIページを表示してソースを表示・コピペで全文チェックしました。
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
でHTMLはいつも正しく指摘してくれるので
CGIの部分も間違っているのか不安なのです・・・難しいですね。
No.2
- 回答日時:
何か意図があってそうしているのかどうかがわかりませんので良し悪しはいえませんが、結果はフォームデータのパースの仕方しだいです。
同じ属性のデータを一括削除する場合などには同じ「name」を使うことも必要になります。
この回答への補足
初心者で詳しくは全くわからないのですが
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
で指摘されたので何か不安なのですが、仕様なので必要な場合があるとの事でしょうか?
改良すべき点は文法的に改善したいのですが。
No.1
- 回答日時:
nameと値が同じ場合、それをハッシュに入れていくと、当然、上書きされるために前に出てきたnameは消えてしまいます。
ですが、配列に入れる場合は問題ありません。
ということで、
<input type="hidden" name="sw_aress" value="">
は不要だと思いますが・・・
この回答への補足
CGI勉強中です。
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
でcgiで表示されるHTMLをチェックしました。
cgiのソース部分(下記)を見つけたのですが
hiddenの方を消去した方が良いのでしょうか?
意図があって存在するのか? 単なるミスなのでしょうか?
よろしくお願いします <(_ _)>
-----------------------------------------
<tr><td>
<input type="hidden" name="sw_aress" value="">
<input type="checkbox" name="sw_aress" value="1"$checked{'sw_aress1'}>レス数
<input type="hidden" name="sw_ref" value="">
<input type="checkbox" name="sw_ref" value="1"$checked{'sw_ref1'}>回数
</td></tr>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスの返す値
-
”送信ボタン” ”クリアボタン”...
-
hiddenで送ったデータの取り出し方
-
アンケートフォームで前のペー...
-
Error: No Recipient というエ...
-
別formのhidden項目を自form値...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
ディレクトリのファイル数取得
-
フリーズする原因
-
WEBページを強制的に横画面で見...
-
ラジオボタンを選択済みにする...
-
フォントサイズを変えるには?
-
MSPゴシックで、一番幅を取る文字
-
ブックマークからのアクセスを...
-
selectboxの画面遷移で、postデ...
-
CGI経由でのPDFファイルをダウ...
-
Yomi-Searchのカテゴリを縦並び...
-
tracert ができない原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスの返す値
-
別formのhidden項目を自form値...
-
チェックボックスでのvalue値の...
-
チェックボックスで選択した内...
-
Error: No Recipient というエ...
-
python subprocessに関する質問
-
CGIでチェックボックスを使...
-
CGIに渡しているパラメータを表...
-
掲示板の文字色指定について
-
hiddenで送ったデータの取り出し方
-
CGIで書き出したJavaScriptの動...
-
ランキング作成
-
クリップボードに記憶した文字...
-
フォームの内容を確認するペー...
-
CGIフォームから飛ばすメールで...
-
アンケートフォームで前のペー...
-
CGIフォームから飛ばすメールが...
-
VBAでWEBもっと見るを押して...
-
検索フォーム設置時のnameの文...
-
フォームの入力内容の後ろに文...
おすすめ情報