ユーザー定義関数その1

前回のサンプルファイルで使用されている関数htmlspecialchars()ですが、関数名が長くて間違えの元となりそうですね。非常に使う関数なのですが、長いのが難点です。

たとえば、これをe()という関数名にできたら楽だとはおもませんか?

それをやってみましょう!そのためには、ユーザー定義関数を作るのです!

その前に、check_inquiry.php ファイルの$title = htmlspecialchars($_POST['title'], ENT_QUOTES);をコメントアウトして、$title = $_POST['title']; に書き換えてください。その後、お問い合わせページのお問い合わせタイトルに下記のコードを入力してお問い合わせボタンを押してみてください。

どうなりましたか?
このようにサニタイズを行わなければ、サイトに対して第三者からいろいろな攻撃が可能になるのです。
それを防ぐためのhtmlspecialchars()関数なのです。

では、check_inquiry.phpファイルを元に戻しておいてください。

次にfunctions.phpファイルを新たに作成しておきましょう。
そこに、下記コードを書いてください。

そして、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命令を使う。
  • ユーザー定義関数の名前は好きに決めれる。
  • 引数の数や、データ型も好きに決めれる。
  • 引数にデフォルト値を設定することで、オプション設定を作れる。