phpにてエスケープしたいとき、htmlspecialcharsを使わなければいけないとおもっていました。
それは間違いないですが、
php
1<?php echo htmlspecialchars($_POST['name']); ?>
は**$_POST['name']に格納されている値に対してhtmlspecialchars()を掛けて画面出力する**記述であり、$_POST['name']自身が変化しているわけではありません。
上記コードを表示する箇所全てに表示するという事態になりかねません。
「表示する箇所全てに表示する」というのは「表示する箇所全てにhtmlspecialchars()」をかけるという意味でいいですかね?
htmlspecialchars()は基本的に画面出力する際にかけるものなので、基本的には、そうです。
一応、$_POST["test"] = "hogehoge";
のようにしてSUBMITされていない情報を設定したり、SUBMITされた情報を上書きするのも可能ではありますが、私はそういう使い方をしたことがありません。
$_POSTの値を直接参照したくないのであれば、一度何かしらの変数で受けて、その変数に対して色々処理を施していく、というのが通常の運用方法かと思います。
もし「全箇所にかけなければならない」という懸念があるのでしたら、$_POSTをそのまま別の変数に受け取っておき、foreachで回して全てにhtmlspecialchars()を掛けた上で、その変数を画面出力に利用すれば良いと思います。
php
1$post_vars = $_POST;
2foreach($post_vars as $key=>$value){
3 $post_vars[$key] = htmlspecialchars($value);
4}
5
6echo $post_vars["test1"];
7echo $post_vars["test2"];
というので、正確には
phpにてエスケープしたいとき、htmlspecialcharsを使わなければいけないとおもっていました。
↓
phpにて**「画面出力時にエスケープしたい情報に対してhtmlspecialcharsを使う」**が正しい理解です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/26 05:51
2018/02/26 05:57
退会済みユーザー
2018/02/26 06:04
2018/02/26 06:07
2018/02/26 06:11 編集
退会済みユーザー
2018/02/26 06:12
2018/02/26 06:13