フォームに
<input name="txt_title" type="text" size="60">
というテキストがあります。
確認ボタンをおすと確認ページにSubmitされます。
確認ページに
<INPUT type="hidden" name="txt_title">
を設置しているのですが、
txt_titleに「"」とかを入力する場合、
value="タイトル"あああ""
と入ってしまい、登録するとき「タイトル」の文字までしか入ってきません。
いちおうHiddenにいれる文字は
$string =~ s/"/"/g;
で変換してから入れているのですが、どうしてでしょうか?またどうすればいいでしょうか。
シングルクォートだけでなく、テキストエリアの改行文字の入れ方も教えてください。
No.5ベストアンサー
- 回答日時:
だいぶ日が経ってしまいましたが、なんだか的はずれな回答ばかり増やしていたようなので、もう一度実行チェックしました。
>$string = "<INPUT type=\"hidden\" name=\"txt_title\" value=\"$G_form- >param('txt_booktitle')\">\n";
もしかしてこの出力用文字列を作ってからすべての「"」に変換をかけていましたか??
やり方としては以下のように
### 受信データのみに変換をかける
$value = $G_form- >param('txt_booktitle');
## 1。必要なら文字コード変換 (以下はjcode.pl 利用の場合)
jcode'convert(*value,'sjis');
## 2。特殊文字対策 受信データをhtml出力するなら以下の4つは変換しておくのがよい
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
print "Content-Type: text/html\n\n";
print <<END_OF_HTML;
-HTMLの中身-
<form name="form" method="post" action="test.cgi">
<INPUT type="hidden" name="txt_title" value="$value">
-その他のformの中身-
</form>
END_OF_HTML
うまく動きました。
No2の方法をとったといいますか、変換のタイミングがおかしかったようです。
とりあえず特殊文字を変換してしまってからHIDDENに入れてしまえばいいのですよね?
いっぱいレスいただいていたのに返事できなくてすみませんでした。
GOOからなぜかお知らせメールが来なかったのでレスされているのをしりませんでした。
No.3
- 回答日時:
>valueに"を入れるときは \"
済みません、これ間違いだったようです。
他で見たのを鵜呑みにして書いてしまいましたm(_ _)m。
&quot; が正しいようですけど、最初にうまくいってなかったのはなぜかな?
>hiddenのvalueには、&quot;ではいりません。
ページのソース表示をするとvalue属性内で&quot;となっているものは、
送信時には、%22 →デコードすると " に戻りますので、
これを勘違いされていただけかも。
textフィールドで表示してみて得られる状態と同じものがhiddenでも送信時データになります。
No.2
- 回答日時:
valueに"を入れるときは \"
<input type="hedden" value="タイトル\"あああ\"">
formをperlでprintするなら、\をエスケープされないよう''かq()でくくるか\\で出力
print q(<input type="hedden" value="タイトル\"あああ\"">);
print qq(<input type="hedden" value="タイトル\\"${title}\\"">);
textareaの改行は、以下のように改行されていればよいので
<textarea>
あa
いb
うc
</textarea>
perlでprintするなら \n
こちらは\をエスケープさせないといけないので""かqq()でくくる
print qq(<textarea>あa\nいb\nうc</textarea>);
この回答への補足
説明になっているかわからないのですが、現在こんなソースです。
G_form->param('txt_booktitle')部分を
どんなふうにして変換すればいいのでしょうか?
$string = "<INPUT type=\"hidden\" name=\"txt_title\" value=\"$G_form->param('txt_booktitle')\">\n";
print "Content-Type: text/html\n\n";
print <<END_OF_HTML;
-HTMLの中身-
<form name="form" method="post" action="test.cgi">
$string
</form>
END_OF_HTML
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jcode.plのconvertを使用しなけ...
-
Jcode を使った複数選択値の文...
-
index関数と英語文字
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
Excel VBAでPDFファイルをMicro...
-
VBA EXCEL あるセルの中の一...
-
CString から LPCTSTRの型に変換
-
Accessでのグループ化で全角・...
-
パス区切りの文字について
-
マクロを使ってフォルダー内に...
-
GoogleAppsScript文字列置換の...
-
正規表現の否定先読みで、複数...
-
「何とかで始まり、何とかで終...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 置換文字がみつからない時
-
EXCELからCSVにすると余計なカ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InputMan の imTextについて
-
戻り値の意味がわかりません…
-
文字化けを元に戻せますか?
-
正規表現でカンマを対象にする方法
-
utf-8のマシンでsjisのデータフ...
-
unicodeの表示
-
ダブルクォート文字などをフォ...
-
チェックボックスの複数選択の...
-
jcodeを使ったgetcode
-
jcodeでsjisに変換できない
-
特殊文字をPOSTした際の動作は?
-
テキストエリアに半角「\\」ま...
-
文字化けの事で?
-
機種依存文字の文字コード変換
-
jcode.plについて
-
文字実体参照が勝手に変換され...
-
「数値文字参照への変換するソ...
-
nkfとjcodeの使い方の違いについて
-
半角と全角の文字数カウント方法
-
常用漢字?でない文字を判定す...
おすすめ情報