- ベストアンサー
CGIを使用してデータの送受信、「"」が認識されない。
CGIを使用してフォームに入力されたデータの送受信を行っています。 1.入力フォームにデータを入力 ↓ 送信 2.上記のデータを表示させて確認。 (それぞれのデータはHIDDENで送信。VALUE=\"$FORM{\"NAME\"}\"のようにしている) ↓ 送信 3.ログファイルへ書き込み としていますが、2までは"を含む文字列が認識されてますが、3でなくなってしまいます。 自分としては2の()内のVALUEあたりが原因じゃないかと思ってるんですが。。。 $buffer =~ s/"/"/g; などやってみましたが、ダメでした。 どのようにしたらいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#48234
回答No.1
テストしていませんが、 VALUE="$FORM{\"NAME\"}" では駄目でしょうか?
その他の回答 (1)
- bikkuri
- ベストアンサー率33% (23/68)
回答No.2
$bufferに入っている値は、生のPOSTのデータですか? その場合は、'"'は'%22'の様に16進文字に変換されていますので、 上手く行きません。 といって、$buffer =~ s/%22/"/g; としてその後、大丈夫かは怪しいです。 やはり、使う前に地道に変換するのが正しいと思います。 ただし、'"'以外にも本来'<', '>', '&'なども処理する必要が あるので、関数を用意すべきでしょう。 (CGI関係のモジュールにはこういうのもあるはずです)
お礼
エラーになってしまいました…。 とりあえず、 $FORM{'NAME'} =~ s/"/"/g; $FORM{'TITLE'} =~ s/"/"/g; のようにひとつひとつの作業を2のコードのところへ付け足したところ、"は認識されました。 でも何かイマイチスマートじゃなくていやなんですけどね…。これしか方法ないんでしょうか?