プログラミング覚え書き

WEB製作覚え書き

ノート代わりに勉強した内容をまとめています。

PHP+MariaDB:不正な値を弾くための関数を作成

 

// ▼▼▼【オリジナル関数を設定】▼▼▼
//   セキュリティ対策
//   ユーザが入力した値内の、HTML上意味を持つ記号を実体参照に変換する
//   ⇒HTML文を入力されても、文字列扱いとなり、処理が実行されない
//   ⇒HTMLタグを使用した攻撃(XSS攻撃)を防げる
//   XSS(クロススクリプティング攻撃)

function h($var)
{
  // ↑↑引数は1つで$varが受け取る
  //   $var:mysqli_fetch_assocにて読み込んだ配列の値が入る
  //   今回は配列にならないのでelse文の処理が行われる

  if (is_array($var)) {
    // ↑↑is_array関数:
    //   引数部分の値が配列かどうかを検査

    // ▼▼▼【配列だった場合の処理】▼▼▼
    return array_map('h'$var);
    // return:
    // function関数内において、戻り値を定義する
    // array_map関数:
    // 第2引数に指定した配列内の値に、第1引数で指定した関数を適用する
    // 配列内の値にh関数を適用して
    // HTMLで意味のある記号をすべて実体参照に置き換えた配列を返す

  } else {
    // ▼▼▼【配列じゃなかった時の処理】▼▼▼
    return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
    // htmlspecialchars関数:
    // 特殊文字をHTMLエンティティに変換する
    // HTMLエンティティ:
    // &で始まって;で終わるテキスト(実体参照
    // つまり、HTMLで意味を持つ記号を実体参照に変換する
    // 第1引数:変換対象文字列「$var」引数で受け取った値
    // 第2引数:変換のルール「ENT_QUOTES」
    // ENT_QUOTES:シングルクオートとダブルクオートを共に変換する
    // 第3引数:文字コード「'UTF-8'」
  }
}