PHPのhtmlspecialcharsについての質問です。
とあるフォームで、「情報登録フォーム」→「確認ページ」→「完了ページ」という構成でプログラムを組んでいます。
タグはエスケープした状態でDBに保存しようと思ってます。
<b>カズン</b>のようにエスケープした文字列をPOST送信したらもとの<b>カズン</b>に戻るという現象に見舞われてます。
まず「情報登録フォーム」で下記のように値をおくります。
<input type="text" name="shop" value="<b>カズン</b>" />
「情報登録フォーム」でタグが入ってもてもエスケープできるように、「確認ページ」の出力時にhtmlspecialcharsを使っています。
結果、下記のようになります。
<input type="hidden" name="shop" value="<b>カズン</b>" />
次にこの値を「完了ページ」にPOSTで送ろうとしたら元の<b>カズン</b>にかわってしまいます。
「完了ページ」で再度htmlspecialcharsをかけたら<b>カズン</b>になるんですが。
私は<b>カズン</b>は普通にPOSTすれば<b>カズン</b>が送られてくると仮定してたのですが、これは正しい仕様なのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
$_POST['shop']は「<b>カズン</b>」となります。
正しい実装の全てのブラウザで、このようになります。
(私は、そうならないブラウザを見たことがありません)。
エスケープしてDBに保存したい場合は、SQL文を組立てる際に、
htmlspecialchars、mysql_real_escape_string(mysqlの場合)を
しなければなりません。
#一般的に、DBには「<b>カズン</b>」を入れておき、
#HTML出力する際に、htmlspecialcharsでエスケープする方式と
#することが多いと思います。
No.3
- 回答日時:
連投失礼します。
InternetExplorer も <b>カズン</b> でPOSTされますよね・・。
<b>カズン</b> というデータを <b>カズン</b> のまま送信するのは InternetExplorer は <textarea></textarea> 内のデータでした。
すみません。
No.2
- 回答日時:
以前私も同じようなことを試していましたが、CGI側にPOSTされるデータはブラウザによって異なるようです。
おそらく value="<b>カズン</b>" でPOSTされたデータが <b>カズン</b> になってしまうのは Firefox ではないでしょうか?
InternetExplorer の場合は <b>カズン</b> がそのままPOSTされてきます。
よってブラウザによりますが正しい仕様だと思います。
No.1
- 回答日時:
一度html上で評価されてしまっているのでそうなっているのでしょう。
もしやるなら
<input type="hidden" name="shop" value="&lt;b&gt;カズン&lt;/b&gt;" />
という感じでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- CAD・DTP Auto CAD LT → Auto CAD 1 2022/04/20 12:29
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームを使わずにPOST送信す...
-
PHPで返信メールにチェックボッ...
-
HTMLエスケープすべき場所につ...
-
IFRAME内PHPのセッション変数取...
-
動的にhtmlテーブルを表示
-
リストボックスにテキスト入力...
-
ログイン画面から入って、「戻...
-
phpでの値を受け渡し方法につい...
-
switch()文で値の大小比較
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
DTOとEntityの差は何ですか。
-
WordでExcelデータを差込...
-
ActiveReportのサブレポート機...
-
DMMの動画を全件取得したのです...
-
wordの差し込み印刷で文字...
-
VBA内でのGetPixelを使用した時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
ログイン画面から入って、「戻...
-
php history.back()の戻るボタ...
-
POSTで受け渡したものを保存し...
-
フォームを使わずにPOST送信す...
-
VBAで重複チェックの仕方を教え...
-
PHPで値を保持する方法
-
ブラウザバックしてもチェック...
-
IFRAME内PHPのセッション変数取...
-
【Java】投稿完了画面リロード...
-
HTMLエスケープ処理とデーター...
-
cURL関数を使用したphpからのpo...
-
asp.netでのセッションを使用し...
-
「ページネーション」で検索キ...
-
php に関して質問です。 各ユー...
-
閉じるボタン「×」を制御したい
-
PHPで名寄せするには?
-
セッションを使用したページ遷移
-
HTMLエスケープすべき場所につ...
-
GETのメリットについて
おすすめ情報