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