0

ビューでこれを生成します。

<form method="post">
       <input type="hidden" 
              name="test" 
              value="<?=htmlentities('<>"&ščé', ENT_QUOTES, 'UTF-8')?>">
       <input type="submit>
</form>

さて、フォームからデータを処理するときにこれを行う必要がありますか?

$decodedTest = html_entity_decode($_POST['test'], ENT_QUOTES, 'UTF-8');

これで大丈夫だと思います:

$decodedTest = $_POST['test'];

しかし、私はこれへの参照を見つけていません。

編集:投稿された値を印刷しましたtestが、値がエンコードされていないことがわかりました。私が知らないのは、この動作とその理由を信頼できるかどうかです。動作原理についてお尋ねします。生の投稿リクエストを調べると、投稿データが urlencoded であることがわかります (これは、htmlentities とは異なるタイプのエンコーディングだと思います)。つまり、クライアントはリクエストを送信する前に再コーディングを実行する必要があります。(クライアント) ブラウザは、送信前に入力値をエンコードされた形式またはデコードされた形式でメモリに保存しますか? (phpがリクエスト内のurlencodedデータを自動的にデコードすることはすでに知っているので、その部分はかなり明確です)。

4

2 に答える 2

1

htmlspecialchars($_POST['test'])$_POST 内のデータがエンティティ エンコードされていないことが印刷(または設定Content-Type: text/plain) によってすぐに明らかになるため、実際には参照は必要ありません。

htmlentitiesまた、ビュー内のデータをエンコードするために呼び出す必要はありませんhtmlspecialchars。目的が有効なマークアップを生成することであれば十分です。

于 2012-11-06T13:35:32.963 に答える
0

フォームを送信すると、それができます。より良いチェック

于 2012-11-06T13:38:15.250 に答える