Loading

[PHP] 入力フォームのバリデーションチェックを実装する

PHPで入力フォームにバリデーションチェックをかける

入力フォームにバリデーションチェックを掛けることは、システムでデータ不整合を発生させないためには非常に重要です。今回は、バリデーションチェックをPHPで実装しましたので、紹介致します。(ユーザビリティ的にはjavascriptでの実装が理想ですが、javascriptはブラウザで無効化できるため、最終的にはサーバサイドでのチェックも必要です)

[PHP] 入力フォームのバリデーションチェックを実装する

1. バリデーションチェック~null,空白~

必須項目の入力時に利用する、空白かどうかを確認するバリデーションチェックです。

/**
 * nullチェック
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isNull($str) {
    if ($str == null || strcmp($str, "") == 0 ) {
        # 文字列が空白の場合、false
        return false;
    }	
    return true;
}

2. バリデーションチェック~半角英数のみ~

プラットフォームによくあるグループID等、日本語を禁止したい場合に利用できるバリデーションチェックです。

/**
 * 半角英数のみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isAlphaNumeric($str, $maxLength = null, $minLength = null) {
    if (!preg_match("/^[a-zA-Z0-9]+$/", $str)) {
        # 半角英数以外が含まれていた場合、false
        return false;
    }
    return true;
}

3. バリデーションチェック~半角数字のみ~

電話番号等、半角数字以外の入力を禁止したい場合に利用できるバリデーションチェックです。

/**
 * 半角数字のみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isNumeric($str) {
    if (!preg_match("/^[0-9]+$/", $str)) {
        # 半角数字以外が含まれていた場合、false
        return false;
    }
    return true;
}

4. バリデーションチェック~半角英字のみ~

名前の英字読み等、半角英字のみかどうかをチェックしたい場合に利用できるバリデーションチェックです。

/**
 * 半角英字のみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isAlphaNumeric($str, $maxLength = null, $minLength = null) {
    if (!preg_match("/^[a-zA-Z]+$/", $str)) {
        # 半角英字以外が含まれていた場合、false
        return false;
    }
    return true;
}

5. バリデーションチェック~ひらがなのみ~

氏名のふりがな欄等、ひらがなのみかどうかを確認したい場合に利用できるバリデーションチェックです。

/**
 * ひらがなのみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isHiragana($str, $maxLength = null, $minLength = null) {        
    if (!preg_match("/^[ぁ-ん]+*$/u", $str)) {
        # ひらがな以外が含まれていた場合、false
        return false;
    }
    return true;
}

6. バリデーションチェック~カタカナのみ~

氏名カナ欄等、カタカナのみかどうかを確認する場合に利用できるバリデーションチェックです。

/**
 * カタカナのみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isKatakana($str, $maxLength = null, $minLength = null) {
    if (!preg_match("/^[ァ-ン]+*$/u", $str)) {
        # カタカナ以外が含まれていた場合、false
        return false;
    }
    return true;
}

7. バリデーションチェック~全角のみ~

よく住所の入力欄に利用されていますが、全角のみかどうかを確認したい場合に利用できるバリデーションチェックです。半角を嫌う理由は、半角は攻撃に使えるような文字が含まれるためです。

/**
 * 全角のみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isMultiByteChar($str, $maxLength = null, $minLength = null) {
    if (strlen($str) == mb_strlen($str,'UTF-8')) {
        # 全角以外が含まれていた場合、false
        return false;
    }
    return true;
}

8. バリデーションチェック~半角~

先ほどのコードと逆で、半角のみかどうかを確認したい場合に利用できるバリデーションチェックです。

/**
 * 半角のみ
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isSingleByteChar($str, $maxLength = null, $minLength = null) {
    if (strlen($str) != mb_strlen($str,'UTF-8')) {
        # 半角以外が含まれていた場合、false
        return false;
    }
    return true;
}

9. バリデーションチェック~半角英数+記号~

英語表記の住所等、入力内容が半角英数と記号のみかどうかを確認したい場合に利用できるバリデーションチェックです。

/**
 * 半角英数+記号
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isAlphaNumericAndSign($str, $maxLength = null, $minLength = null) {
    if (!preg_match("/^[a-zA-Z0-9!-/:-@¥[-`{-~]+$/", $str))) {
        # 半角英数+記号以外が含まれていた場合、false
        return false;
    }
    return true;
}

10. バリデーションチェック~電話番号~

入力内容が、電話番号形式かどうかを確認する場合に利用できるバリデーションチェックです。下記にパターンでチェックをかけています。

ハイフン無しの6~9桁
またはハイフンありの13桁以下

/**
 * 電話番号(ハイフン無しの6~9桁、またはハイフンありの13桁以下)
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isPhoneNumber($str) {
    if (!preg_match("/^[0-9-]{6,9}$|^[0-9-]{13}$/", $str)) {
        # 電話番号以外の形式の場合、falseを返す
        return false;
    }
    return true;
}

11. バリデーションチェック~携帯電話~

入力内容が携帯電話形式か否かを確認する場合に利用できるバリデーションチェックです。電話番号と違い電話番号の桁数が決まっているので、より厳しくチェックをかけています。

/**
 * 携帯電話番号(「XXX-XXXX-XXXX」または「XXXXXXXXXXX(11桁)」)
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isCellPhoneNumber($str) {
    if (!preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$|^[0-9]{11}$/", $str)) {
        # 携帯電話番号以外の形式の場合、falseを返す
        return false;
    }
    return true;
}

12. バリデーションチェック~郵便番号~

入力内容が郵便番号形式か否かを確認する場合に利用できるバリデーションチェックです。

/**
 * 郵便番号(「XXX-XXXX」)
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isPostCode($str) {
    if (!preg_match("/^[0-9]{3}-[0-9]{4}$/", $str)) {
        # 郵便番号以外の形式の場合、falseを返す
        return false;
    }
    return true;
}

13. バリデーションチェック~メールアドレス~

入力内容がメールアドレス形式か否かを確認する場合に利用できるバリデーションチェックです。

/**
 * メールアドレス
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isMailAddress($str) {
    # First, we check that there's one @ symbol, and that the lengths are right
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $str)) {
        # Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
        return false;
    }
    # Split it into sections to make life easier
    $str_array = explode("@", $str);
    $local_array = explode(".", $str_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
            return false;
        }
    }
    if (!ereg("^\[?[0-9\.]+\]?$", $str_array[1])) {
        # Check if domain is IP. If not, it should be valid domain name
        $domain_array = explode(".", $str_array[1]);
        if (sizeof($domain_array) < 2) {
            # Not enough parts to domain
            return false;
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
            if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
                return false;
            }
        }
    }
    return true;
}

14. バリデーションチェック~URL~

入力内容がURL形式か否かを判断する場合に利用できるバリデーションチェックです。

/**
 * URL
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isUrl($str) {
    if (!preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $str)) {
        # URL以外の形式の場合、false
        return false;
    }
    return true;
}

15. バリデーションチェック~ファイル名~

ファイル名に入力できない文字があるため、ファイル名入力欄に、入力NGの値が有るか否かをチェックする場合に利用できるバリデーションチェックです。

/**
 * ファイル名 (「¥, /, :, *, ?, ", <, >, |」以外)
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isFile($str) {
    if (preg_match('/^.*[(\\|/|:|\*|?|\"|<|>|\|)].*$/', $str)) {
        # URL以外の形式の場合、false
        return false;
    }
    return true;
}

16. バリデーションチェック~日付~

入力内容が日付形式か否かをチェックする場合に利用できるバリデーションチェックです。有効日付かどうかのチェックも入れています。

/**
 * 日付(YYYY/MM/DD形式)
 *
 * @param String $str チェック文字列
 * @return boolean true:エラー無し false:validationエラーあり
 */
function isDate($str) {
    if (!preg_match("|^\d{4}\/\d{2}\/\d{2}$|", $str)) {
        # 日付以外の形式の場合、false
        return false;
    }
    if(!checkdate( substr($str, 5, 2 ), substr($str, 8, 2 ), substr($str, 0, 4 ))){
        # 日付以外の場合、false
        return false;
    }
    
    return true;
}

[PHP] ショートカット(短縮)URL取得 with Google短縮URL API

[Vim] Vimを10倍かっこよく使いこなすためのコマンド集

関連記事

  1. [SQLServer] クエリのパフォーマンス調査・ボトルネックの特定

    2017.08.08
  2. [Windows] コマンドプロンプトで簡単にファイル一覧を作成する方法!

    2017.11.08
  3. [Excel] 効率を大幅に上げる便利な関数使い方一覧

    2017.01.06
  4. [PHP] ショートカット(短縮)URL取得 with Google短縮URL …

    2016.05.09
  5. SSHでリモートコマンド実行、成功失敗の返り値(戻り値)取得方法

    2016.06.23
  6. [Linux] シェルスクリプトでフォルダ単位圧縮バックアップ & ロ…

    2018.01.09

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. sangokutenbu_sonken_01
  2. kijo_tekiro_01
  3. anohana
  4. sangokutenbu_kido_02
  5. HNIMGL9701_TP_V4
PAGE TOP