예제 #1
0
/**
 * 名簿の検証
 *
 * @param array $queries
 * @param array $options
 *
 * @return array
 */
function validate_members($queries, $options = array())
{
    $messages = array();
    // クラス
    if (isset($queries['class_id'])) {
        if (!validator_required($queries['class_id'])) {
            $messages['class_id'] = 'クラスが入力されていません。';
        }
    }
    // 名前
    if (isset($queries['name'])) {
        if (!validator_required($queries['name'])) {
            $messages['name'] = '名前が入力されていません。';
        } elseif (!validator_max_length($queries['name'], 20)) {
            $messages['name'] = '名前は20文字以内で入力してください。';
        }
    }
    // 名前(フリガナ)
    if (isset($queries['name_kana'])) {
        if (!validator_required($queries['name_kana'])) {
            $messages['name_kana'] = '名前(フリガナ)が入力されていません。';
        } elseif (!validator_katakana($queries['name_kana'])) {
            $messages['name_kana'] = '名前(フリガナ)は全角カタカナで入力してください。';
        } elseif (!validator_max_length($queries['name_kana'], 20)) {
            $messages['name_kana'] = '名前(フリガナ)は20文字以内で入力してください。';
        }
    }
    // 成績
    if (isset($queries['grade'])) {
        if (!validator_required($queries['grade'])) {
            $messages['grade'] = '成績が入力されていません。';
        } elseif (!validator_numeric($queries['grade'])) {
            $messages['grade'] = '成績は半角数字で入力してください。';
        } elseif (!validator_max_length($queries['grade'], 3)) {
            $messages['grade'] = '成績は3桁以内で入力してください。';
        }
    }
    // 生年月日
    if (isset($queries['birthday'])) {
        if (!validator_required($queries['birthday'])) {
        } elseif (!validator_date($queries['birthday'])) {
            $messages['birthday'] = '生年月日の値が不正です。';
        }
    }
    // メールアドレス
    if (isset($queries['email'])) {
        if (!validator_required($queries['email'])) {
        } elseif (!validator_email($queries['email'])) {
            $messages['email'] = 'メールアドレスの入力内容が正しくありません。';
        }
    }
    // 電話番号
    if (isset($queries['tel'])) {
        if (!validator_required($queries['tel'])) {
        } elseif (!validator_regexp($queries['tel'], '^\\d+-\\d+-\\d+$')) {
            $messages['tel'] = '電話番号の書式が不正です。';
        } elseif (!validator_max_length($queries['tel'], 20)) {
            $messages['tel'] = '電話番号は20文字以内で入力してください。';
        }
    }
    // メモ
    if (isset($queries['memo'])) {
        if (!validator_required($queries['memo'])) {
        } elseif (!validator_max_length($queries['memo'], 1000)) {
            $messages['memo'] = 'メモは1000文字以内で入力してください。';
        }
    }
    // 公開
    if (isset($queries['public'])) {
        if (!validator_boolean($queries['public'])) {
            $messages['public'] = '公開の書式が不正です。';
        }
    }
    /*
        // 分類
        if (isset($queries['category_sets'])) {
            if (empty($queries['category_sets'])) {
                $messages['category_sets'] = '分類が入力されていません。';
            }
        }
    */
    return $messages;
}
예제 #2
0
/**
 * ユーザの検証
 *
 * @param array $queries
 * @param array $options
 *
 * @return array
 */
function validate_users($queries, $options = array())
{
    $options = array('duplicate' => isset($options['duplicate']) ? $options['duplicate'] : true);
    $messages = array();
    // ユーザ名
    if (isset($queries['username'])) {
        if (!validator_required($queries['username'])) {
            $messages['username'] = '******';
        } elseif (!validator_alpha_dash($queries['username'])) {
            $messages['username'] = '******';
        } elseif (!validator_between($queries['username'], 4, 20)) {
            $messages['username'] = '******';
        } elseif (validator_regexp($queries['username'], '(account|admin|alias|api|app|auth|config|contact|debug|default|develop|error|example|guest|help|home|index|info|inquiry|login|logout|master|register|root|sample|setting|signin|signout|signup|staff|status|support|system|test|user|version|www)')) {
            $messages['username'] = '******';
        } elseif ($options['duplicate'] === true) {
            if ($queries['id']) {
                $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users', 'where' => array('id != :id AND username = :username', array('id' => $queries['id'], 'username' => $queries['username']))));
            } else {
                $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users', 'where' => array('username = :username', array('username' => $queries['username']))));
            }
            if (!empty($users)) {
                $messages['username'] = '******';
            }
        }
    }
    // パスワード
    if (isset($queries['password'])) {
        $flag = false;
        if ($queries['id']) {
            if ($queries['password'] !== '') {
                $flag = true;
            }
        } else {
            if (!validator_required($queries['password'])) {
                $messages['password'] = '******';
            } else {
                $flag = true;
            }
        }
        if ($flag === true) {
            if (!validator_regexp($queries['password'], '^[\\w\\!\\"\\#\\$\\%\\&\'\\(\\)\\*\\+\\,\\-\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\\\\\]\\^\\_\\`\\{\\|\\}\\~]+$')) {
                $messages['password'] = '******';
            } elseif (validator_regexp($queries['password'], '^([a-zA-Z]+|[0-9]+)$')) {
                $messages['password'] = '******';
            } elseif (!validator_between($queries['password'], 8, 40)) {
                $messages['password'] = '******';
            } elseif (isset($queries['username']) && validator_equals($queries['password'], $queries['username'])) {
                $messages['password'] = '******';
            } elseif (!validator_equals($queries['password'], $queries['password_confirm'])) {
                $messages['password'] = '******';
            }
        }
    }
    // メールアドレス
    if (isset($queries['email'])) {
        if (!validator_required($queries['email'])) {
            $messages['email'] = 'メールアドレスが入力されていません。';
        } elseif (!validator_email($queries['email'])) {
            $messages['email'] = 'メールアドレスの入力内容が正しくありません。';
        } elseif (!validator_max_length($queries['email'], 80)) {
            $messages['email'] = 'メールアドレスは80文字以内で入力してください。';
        } elseif ($options['duplicate'] === true) {
            if ($queries['id']) {
                $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users', 'where' => array('id != :id AND email = :email', array('id' => $queries['id'], 'email' => $queries['email']))));
            } else {
                $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users', 'where' => array('email = :email', array('email' => $queries['email']))));
            }
            if (!empty($users)) {
                $messages['email'] = '入力されたメールアドレスはすでに使用されています。';
            }
        }
    }
    // メールアドレス認証
    if (isset($queries['email_activated'])) {
        if (!validator_boolean($queries['email_activated'])) {
            $messages['email_activated'] = 'メールアドレス認証の書式が不正です。';
        }
    }
    // 暗証コード
    if (isset($queries['token_code'])) {
        if (!validator_required($queries['token_code'])) {
            $messages['token_code'] = '暗証コードが入力されていません。';
        } else {
            $users = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'users', 'where' => array('email = :email AND token_code = :token_code', array('email' => $queries['key'], 'token_code' => $queries['token_code']))));
            if (empty($users)) {
                $messages['token_code'] = '暗証コードが違います。';
            }
        }
    }
    // 2段階認証
    if (isset($queries['twostep'])) {
        if (!validator_boolean($queries['twostep'])) {
            $messages['twostep'] = '2段階認証の書式が不正です。';
        }
    }
    // 2段階認証用メールアドレス
    if (isset($queries['twostep_email'])) {
        if ($queries['twostep'] === 1) {
            if (!validator_required($queries['twostep_email'])) {
                $messages['twostep_email'] = '2段階認証用メールアドレスが入力されていません。';
            } elseif (!validator_email($queries['twostep_email'])) {
                $messages['twostep_email'] = '2段階認証用メールアドレスの入力内容が正しくありません。';
            } elseif (!validator_regexp($queries['twostep_email'], '@(' . implode('|', array_map('preg_quote', $GLOBALS['config']['carriers'], array('/'))) . ')$')) {
                $messages['twostep_email'] = '指定されたドメインは使用できません。';
            }
        }
    }
    return $messages;
}