Пример #1
0
/**
 * 教室の検証
 *
 * @param array $queries
 * @param array $options
 *
 * @return array
 */
function validate_classes($queries, $options = array())
{
    $options = array('duplicate' => isset($options['duplicate']) ? $options['duplicate'] : true);
    $messages = array();
    // コード
    if (isset($queries['code'])) {
        if (!validator_required($queries['code'])) {
            $messages['code'] = 'コードが入力されていません。';
        } elseif (!validator_alpha_dash($queries['code'])) {
            $messages['code'] = 'コードは半角英数字で入力してください。';
        } elseif (!validator_max_length($queries['code'], 20)) {
            $messages['code'] = 'コードは20文字以内で入力してください。';
        } elseif ($options['duplicate'] === true) {
            if ($queries['id']) {
                $classes = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'classes', 'where' => array('id != :id AND code = :code', array('id' => $queries['id'], 'code' => $queries['code']))));
            } else {
                $classes = db_select(array('select' => 'id', 'from' => DATABASE_PREFIX . 'classes', 'where' => array('code = :code', array('code' => $queries['code']))));
            }
            if (!empty($classes)) {
                $messages['code'] = '入力されたコードはすでに使用されています。';
            }
        }
    }
    // 名前
    if (isset($queries['name'])) {
        if (!validator_required($queries['name'])) {
            $messages['name'] = '名前が入力されていません。';
        } elseif (!validator_max_length($queries['name'], 20)) {
            $messages['name'] = '名前は20文字以内で入力してください。';
        }
    }
    // メモ
    if (isset($queries['memo'])) {
        if (!validator_required($queries['memo'])) {
        } elseif (!validator_max_length($queries['memo'], 1000)) {
            $messages['memo'] = 'メモは1000文字以内で入力してください。';
        }
    }
    // 並び順
    if (isset($queries['sort'])) {
        if (!validator_required($queries['sort'])) {
            $messages['sort'] = '並び順が入力されていません。';
        } elseif (!validator_numeric($queries['sort'])) {
            $messages['sort'] = '並び順は半角数字で入力してください。';
        } elseif (!validator_max_length($queries['sort'], 5)) {
            $messages['sort'] = '並び順は5桁以内で入力してください。';
        }
    }
    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;
}