A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> cgi内では"は使用できませんよね?
そんなことは無いです。ちゃんと使用できますよ。
ダブルクォートで囲んだ文字列の中にダブルクォートを入れる場合、
$str = "<IMG src=\"xxx\">\n";
のように、「\」を使ってエスケープすれば大丈夫です。
ただ、この方法でHTMLを書くと \ だらけで大変見にくくなってしまうので、「ヒアドキュメント」や「qq 演算子」(または「q 演算子」)を使うことが多いです。
No.1では qq を使って「qq{文字列}」のように書きましたが、{ と } の部分は、他の種類のカッコか、別の記号文字でも構いません。
詳しくは参考書などで調べてみてください。
次に chr2ref 関数について。
「文字参照」は知ってますよね?(< や & など)
フォームのvalue内の一部の文字参照は、送信時に文字実体となって送信されます。
つまり、
<INPUT type="hidden" name="a" value="b&c">
という hiddenフォームの値を受け取ると
a=b%26c (「%26」をデコードすると「&」)
となっています。
もちろん、value="b&c" でも大丈夫ですが、前述のダブルクォートや文字参照自身を書きたい場合には必要です。
例えば「<」自身を出力する場合は「&lt;」としなければなりません。
通常の文字列を書き出す際に chr2ref を通すことは、フォームだけでなくHTML全体において有効ですが、受け取ったフォームの値を使う場合には注意が必要です。
なぜなら、掲示板のような‘入力された値をHTMLに出力するCGI’では、たいていの場合、入力された < や > をデコードの時点で文字参照に変換しているのです。
文字参照化されている文字列を chr2ref に通すと、
入力値 <
↓
デコード <
↓
chr2ref &lt;
となってしまいます。
もしデコードで文字参照化を行っていなければ、No.1のお礼のやり方で問題ありません。
行っている場合は chr2ref は必要ないわけですが、デコードの文字参照化がちゃんと &、<、>、" の4文字を対象にしているか確認して下さい。
中途半端に < と > しかやっていないと、うまく行かないことがあります。
また、必ず & → & の変換を最初に行って下さい。でないと < → < → &lt; となってしまいます。
No.1
- 回答日時:
フォームのvalue値をシングルクォートで囲んでいませんか?
例えば、
<INPUT type=hidden name=a value='X'mas'>
のようにすると、「value='X'」と その他の属性「mas'」であるかのように認識され、X しか送信されません。
回避するには value='X\'mas' のようにすればよいでしょう。
ただし、本来ならシングルクォートではなくダブルクォートで囲み、中のダブルクォートは文字参照(")に変換するべきです。
(同様に、&、<、> の変換も必要)
なので、そのような文字参照への変換関数を1つ作っておき、HTMLへの出力する値はその関数を通すようにしてはどうでしょう?
sub chr2ref {
local($_) = @_;
s/&/&/g; s/</</g; s/>/>/g; s/"/"/g;
$_;
}
print qq{<INPUT type="hidden" name="a" value="}, chr2ref("X'mas"), qq{">\n};
回答ありがとうございます。
実際の書込みはcgiによるデータの送受信で行っているのですが、
その場合も
chr2ref("$FORM{'hogehoge'}")・・
のようにしてしまってもOKなのでしょうか?
またダブルクォーテーションを使用したかったのですが、cgi内では"は使用できませんよね?それで安易に'を使用してしまったのですが…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
gpioを使ってSPIをシミュレーシ...
-
受け取り方を教えて下さい
-
CGI作成中なんですが・・・
-
Application.ScreenUpdating = ...
-
セレクトメニューで2つの項目...
-
formで特定のinputを送信しない...
-
VB6で、長い時間かかる処理...
-
sendmailで複数の宛先にメール...
-
実行中の変数の中身をイミディ...
-
ACCESS テキストボックスを隙...
-
c言語 16進数の2進数への変換
-
[python] 文字列を変数名として...
-
初回起動のみ判別したい
-
複数列を持ったリストボックス...
-
【プルダウンで選んでGOボタン...
-
TXTに出力すると文字化けが起こる
-
Perlで複数の値を返す良い方法...
-
Cookieの有効期限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
途中まで出来ているのですが‥(D...
-
Perlでアルファベットを数...
-
リロード後にプルダウンの選択...
-
linq で 楽天ウェブサービスのX...
-
【C#】数値の範囲チェックについて
-
ホームページから意見を送るsen...
-
CGI(Perl)で、Net::FTPを使いたい
-
半角スペースが有効にならない。
-
演算子について
-
セレクトボックスについて
-
受信データの分割
-
フォーム入力(CGIでデータ取得)...
-
CGIは初心者です。よろしくお願...
-
VB2010 のユーザコントロールの...
-
"ー"を含むとサーバーエラーになる
-
フォームで入力した値を表示し...
-
正規表現での検索がうまくいき...
-
掲示板のコメント欄にあらかじ...
おすすめ情報