/** * 教室の検証 * * @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; }
/** * ユーザの検証 * * @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; }