前回のサンプルファイルで使用されている関数htmlspecialchars()ですが、関数名が長くて間違えの元となりそうですね。非常に使う関数なのですが、長いのが難点です。
たとえば、これをe()という関数名にできたら楽だとはおもませんか?
それをやってみましょう!そのためには、ユーザー定義関数を作るのです!
その前に、check_inquiry.php ファイルの$title = htmlspecialchars($_POST['title'], ENT_QUOTES);をコメントアウトして、$title = $_POST['title']; に書き換えてください。その後、お問い合わせページのお問い合わせタイトルに下記のコードを入力してお問い合わせボタンを押してみてください。
|
<script>$(function(){$('*').css('background','red');});</script> |
どうなりましたか?
このようにサニタイズを行わなければ、サイトに対して第三者からいろいろな攻撃が可能になるのです。
それを防ぐためのhtmlspecialchars()関数なのです。
では、check_inquiry.phpファイルを元に戻しておいてください。
次にfunctions.phpファイルを新たに作成しておきましょう。
そこに、下記コードを書いてください。
|
function e($str,$charset='UTF-8'){ return htmlspecialchars($str,ENT_QUOTES,$charset); } |
そして、header.phpにfunctions.phpをrequireさせてください。
これで、htmlspecialchars関数を使用する場合は、e()でつかえるようになります。
ためしにcheck_inquiry.phpで動作確認を行ってみてください。
解説======
ユーザー定義関数を作っています。
function = ユーザー定義関数を作成する場合の命令文
e = ユーザー定義関数の名前(好きな名前)
() = 引数設定
- 今回の場合は、引数に渡されるものは、第一引数$str(名前は任意)=文字列
- 第2引数 オプション扱い(デフォルトで値を設定していますので、呼び出し元で引数を渡さなくても、$charsetの値はUTF-8になっています。)
処理の中身 =htmlspecialchars()関数を使用
- 第一引数にe関数に渡された引数の$strを渡しています。
- 第2引数は、ENT_QUOTESを設定、
- 第3引数は、charsetを渡しています。
- 参考 htmlspecialchars()マニュアル→
今回は、htmlspecialchars()を楽に使おうという目的のもとにユーザー定義関数の基本ヲ学習しましtら
POINT!==
- ユーザー定義関数を作る場合にはfunction命令を使う。
- ユーザー定義関数の名前は好きに決めれる。
- 引数の数や、データ型も好きに決めれる。
- 引数にデフォルト値を設定することで、オプション設定を作れる。