/** * ログインIDからメンバーIDを取得する * * @param string $username ログインID * @param bool $is_ktai 携帯からのアクセスかどうか * @return int $c_member_id メンバーID */ function op_member_c_member_id4username($username, $is_ktai = false) { return db_member_c_member_id4username($username, $is_ktai); }
function execute($requests) { //<PCKTAI if (OPENPNE_AUTH_MODE == 'slavepne' || !((OPENPNE_REGIST_FROM & OPENPNE_REGIST_FROM_KTAI) >> 1)) { openpne_redirect('ktai', 'page_o_login', array('msg' => 42)); } //> // --- リクエスト変数 $ses = $requests['ses']; $aff_id = $requests['aff_id']; // ---------- //--- 権限チェック //セッションが有効 // セッションが有効かどうか if (!($pre = db_member_c_member_ktai_pre4session($ses))) { // 無効の場合、login へリダイレクト openpne_redirect('ktai', 'page_o_login', array('msg' => 42)); } // メールアドレスが登録できるかどうか if (!util_is_regist_mail_address($pre['ktai_address'])) { openpne_redirect('ktai', 'page_o_login', array('msg' => 42)); } //--- $errors = array(); $validator = new OpenPNE_Validator(); $validator->addRequests($_REQUEST); $validator->addRules($this->_getValidateRules()); if (!$validator->validate()) { $errors = $validator->getErrors(); } $prof = $validator->getParams(); //--- c_profile の項目をチェック $validator = new OpenPNE_Validator(); $validator->addRequests($_REQUEST['profile']); $validator->addRules(util_get_validate_rules_profile('regist')); if (!$validator->validate()) { $errors = array_merge($errors, $validator->getErrors()); } // 値の整合性をチェック(DB) $c_member_profile_list = db_member_check_profile($validator->getParams(), $_REQUEST['public_flag']); // 必須項目チェック $profile_list = db_member_c_profile_list4null(); foreach ($profile_list as $profile) { $value = $c_member_profile_list[$profile['name']]['value']; if ($profile['disp_regist'] && $profile['is_required']) { if (is_null($value) || $value === '' || $value === array()) { $errors[$profile['name']] = $profile['caption'] . 'を入力してください'; } } } // 生年月日のチェック if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) { $errors[] = '生年月日を正しく入力してください'; } if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) { $errors[] = '生年月日を未来に設定することはできません'; } if (IS_GET_EASY_ACCESS_ID != 0) { $easy_access_id = OpenPNE_KtaiID::getID(); if (!$easy_access_id && (IS_GET_EASY_ACCESS_ID == 2 || IS_GET_EASY_ACCESS_ID == 3) && !$pre['is_disabled_regist_easy_access_id']) { openpne_redirect('ktai', 'page_o_regist_ktai_uid_err'); } if (db_member_c_member_id4easy_access_id($easy_access_id)) { $errors[] = 'この携帯個体識別番号はすでに登録されています'; } if (db_member_easy_access_id_is_blacklist(md5($easy_access_id))) { ktai_display_error('新規登録を完了できませんでした。'); } } if (OPENPNE_AUTH_MODE == 'pneid') { // ログインIDの重複チェック if (db_member_c_member_id4username($prof['login_id'])) { $errors[] = 'このログインIDはすでに登録されています'; } } // 入力エラー if ($errors) { ktai_display_error($errors); } // insert c_member $prof['c_member_id_invite'] = $pre['c_member_id_invite']; // 参加承認制 if (IS_SNS_ENTRY_CONFIRM) { $c_member_secure = array('password' => $prof['password'], 'c_password_query_answer' => $prof['password_query_answer'], 'ktai_address' => $pre['ktai_address'], 'regist_address' => $pre['ktai_address'], 'nickname' => $prof['nickname'], 'birth_year' => $prof['birth_year'], 'birth_month' => $prof['birth_month'], 'birth_day' => $prof['birth_day'], 'public_flag_birth_year' => $prof['public_flag_birth_year'], 'public_flag_birth_month_day' => $prof['public_flag_birth_month_day'], 'c_password_query_id' => $prof['c_password_query_id'], 'is_sns_entry_confirm' => 1); // 仮登録IDを割り出す $c_member_pre_id = db_member_insert_c_member_pre_from_ktai($prof['c_member_id_invite'], $pre['ktai_address'], $pre['ktai_address'], $pre['session']); // c_member_pre_profile にデータ挿入 db_member_update_c_member_pre_profile($c_member_pre_id, $c_member_profile_list); if ($easy_access_id) { $c_member_secure['easy_access_id'] = $easy_access_id; } if (OPENPNE_AUTH_MODE == 'pneid') { $c_member_secure['login_id'] = $prof['login_id']; } // 登録 db_member_update_c_member_pre4c_member_pre_id($c_member_pre_id, $c_member_secure); // delete c_member_ktai_pre db_member_delete_c_member_ktai_pre4id($pre['c_member_ktai_pre_id']); openpne_redirect('ktai', 'page_o_regist_wait'); } $c_member_secure = array('password' => $prof['password'], 'password_query_answer' => $prof['password_query_answer'], 'pc_address' => '', 'ktai_address' => $pre['ktai_address'], 'regist_address' => $pre['ktai_address']); if (!($c_member_id = util_regist_c_member($prof, $c_member_secure, $c_member_profile_list))) { openpne_redirect('ktai', 'page_o_login', array('msg' => 42)); } // 個体識別番号の登録 if ($easy_access_id) { db_member_update_easy_access_id($c_member_id, $easy_access_id); } // delete c_member_ktai_pre db_member_delete_c_member_ktai_pre4id($pre['c_member_ktai_pre_id']); do_insert_c_member_mail_send($c_member_id, $prof['password'], $pre['ktai_address']); // 登録完了メール(管理者宛) if (SEND_USER_DATA) { do_common_send_mail_regist4admin($c_member_id); } if ($aff_id) { $p = array('aff_id' => $aff_id); } else { $p = array(); } $p['c_member_id'] = $c_member_id; openpne_redirect('ktai', 'page_o_regist_end', $p); }
function execute($requests) { $member_file = $_FILES['member_file']; $limit = 1000; // 行数制限 if (empty($member_file) || $member_file['error'] === UPLOAD_ERR_NO_FILE) { $this->handleError('ファイルを指定してください'); } $filename_parts = explode('.', $member_file['name']); if (array_pop($filename_parts) != 'csv') { $this->handleError('拡張子は.csvにしてください'); } $handle = fopen($member_file['tmp_name'], 'r'); if (($data = fgetcsv($handle, 4096)) === false) { $this->handleError('ファイルの内容が空です'); } $required_list = array('nickname', 'mail_address', 'password'); if (OPENPNE_AUTH_MODE == 'pneid') { $required_list[] = 'login_id'; } foreach ($required_list as $required) { if (!in_array($required, $data)) { $this->handleError('1行目: ' . $required . 'は必須項目です'); } } $title = array(); foreach ($data as $key => $value) { $matches = array(); if (preg_match('/^profile\\[(.*)\\]$/', $value, $matches)) { $is_profile = true; $name = $matches[1]; $c_profile = db_member_c_profile4name($name); } else { $is_profile = false; $name = $value; $c_profile = null; } $title[$key] = array('is_profile' => $is_profile, 'name' => $name, 'c_profile' => $c_profile); } $row = 1; // 1行目がタイトル行 $count = 0; // メンバー登録に成功した数 while (($data = fgetcsv($handle, 4096)) !== false && $row <= $limit) { $row++; $data_member = array(); $data_profile = array(); foreach ($data as $key => $value) { if (empty($title[$key])) { continue; } $name = $title[$key]['name']; if ($title[$key]['is_profile']) { if ($title[$key]['c_profile']['form_type'] === 'checkbox') { $data_profile[$name] = explode(',', $value); } else { $data_profile[$name] = $value; } } else { $data_member[$name] = $value; } } if (is_ktai_mail_address($data_member['mail_address'])) { $data_member['mail_address'] = str_replace('"', '', $data_member['mail_address']); } // validate $errors = array(); $validator = new OpenPNE_Validator(); $validator->addRequests($data_member); $validator->addRules($this->_getValidateRules()); if (!$validator->validate()) { $errors = array_merge($errors, $validator->getErrors()); } $member = $validator->getParams(); // mail_address if (!db_common_is_mailaddress($member['mail_address'])) { $errors[] = "メールアドレス [{$member['mail_address']}] はメールアドレスとして正しくありません"; } elseif (db_member_is_sns_join4mail_address($member['mail_address'])) { $errors[] = "メールアドレス [{$member['mail_address']}] は既に登録済みです"; } elseif (!db_member_is_limit_domain4mail_address($member['mail_address'])) { $errors[] = "メールアドレス [{$member['mail_address']}] は登録できません"; } // login_id if (OPENPNE_AUTH_MODE == 'pneid') { if (db_member_c_member_id4username($member['login_id'])) { $errors[] = "ログインID[{$member['login_id']}]は既に登録済みです"; } } // 生年月日のチェック if ($member['birth_year'] || $member['birth_month'] || $member['birth_day']) { if (!t_checkdate($member['birth_month'], $member['birth_day'], $member['birth_year'])) { $errors[] = '生年月日を正しく入力してください'; } elseif (t_isFutureDate($member['birth_day'], $member['birth_month'], $member['birth_year'])) { $errors[] = '生年月日を未来に設定することはできません'; } } if ($errors) { $this->handleError("{$row}行目:" . array_shift($errors)); } // profile $c_member_profile = db_member_check_profile($data_profile, array()); // register // メールアドレスが携帯メールアドレスのドメインの場合は、 // 携帯メールアドレスとして登録する if (is_ktai_mail_address($member['mail_address'])) { $ktai_address = $member['mail_address']; $pc_address = ''; } else { $ktai_address = ''; $pc_address = $member['mail_address']; } $c_member = array('nickname' => $member['nickname'], 'birth_year' => $member['birth_year'], 'birth_month' => $member['birth_month'], 'birth_day' => $member['birth_day'], 'c_password_query_id' => 0, 'c_member_id_invite' => 1, 'is_receive_mail' => 1, 'is_receive_ktai_mail' => 1, 'is_receive_daily_news' => 1, 'public_flag_birth_year' => $member['public_flag_birth_year'], 'public_flag_birth_month_day' => $member['public_flag_birth_month_day']); if (OPENPNE_AUTH_MODE == 'pneid') { $c_member['login_id'] = $member['login_id']; } $c_member_secure = array('password' => $member['password'], 'pc_address' => $pc_address, 'ktai_address' => $ktai_address, 'regist_address' => $member['mail_address']); if (!util_regist_c_member($c_member, $c_member_secure, $c_member_profile)) { $this->handleError("{$row}行目:メンバー登録に失敗しました"); } $count++; } fclose($handle); admin_client_redirect('import_c_member', "{$count}件のインポートが完了しました"); }
function execute($requests) { //<PCKTAI if (OPENPNE_AUTH_MODE == 'slavepne' || !(OPENPNE_REGIST_FROM & OPENPNE_REGIST_FROM_PC)) { client_redirect_login(); } //> $sid = $requests['sid']; if (!db_member_is_active_sid($sid)) { $p = array('msg_code' => 'invalid_url'); openpne_redirect('pc', 'page_o_tologin', $p); } $pre = db_member_c_member_pre4sid($sid); $mode = $requests['mode']; $errors = array(); $validator = new OpenPNE_Validator(); if ($mode == 'register') { session_name('OpenPNEpcregist'); @session_start(); $validator->addRequests($_SESSION['prof']); $requests['password2'] = $_SESSION['prof']['password']; } else { $validator->addRequests($_REQUEST); } $validator->addRules($this->_getValidateRules()); if (!$validator->validate()) { $errors = $validator->getErrors(); } $prof = $validator->getParams(); if ($prof['password'] !== $requests['password2']) { $errors['password2'] = 'パスワードが一致していません'; } //--- c_profile の項目をチェック $validator = new OpenPNE_Validator(); if ($mode == 'register') { $validator->addRequests($_SESSION['prof']['profile']); $public_flag_list = $_SESSION['prof']['public_flag']; } else { $validator->addRequests($_REQUEST['profile']); $public_flag_list = $_REQUEST['public_flag']; } $validator->addRules(util_get_validate_rules_profile('regist')); if (!$validator->validate()) { $errors = array_merge($errors, $validator->getErrors()); } // 値の整合性をチェック(DB) $c_member_profile_list = db_member_check_profile($validator->getParams(), $public_flag_list); // 必須項目チェック $profile_list = db_member_c_profile_list4null(); foreach ($profile_list as $profile) { $value = $c_member_profile_list[$profile['name']]['value']; if ($profile['disp_regist'] && $profile['is_required']) { if (is_null($value) || $value === '' || $value === array()) { $errors[$profile['name']] = $profile['caption'] . 'を入力してください'; } } } // 生年月日のチェック if (!t_checkdate($prof['birth_month'], $prof['birth_day'], $prof['birth_year'])) { $errors[] = '生年月日を正しく入力してください'; } if (t_isFutureDate($prof['birth_day'], $prof['birth_month'], $prof['birth_year'])) { $errors[] = '生年月日を未来に設定することはできません'; } if (OPENPNE_AUTH_MODE == 'pneid') { // ログインIDの重複チェック if (db_member_c_member_id4username($prof['login_id'])) { $errors[] = 'このログインIDはすでに登録されています'; } } if ($mode != 'input' && $errors) { $_REQUEST['err_msg'] = $errors; $mode = 'input'; @session_start(); $_SESSION['prof'] = $_REQUEST; unset($_SESSION['password']); } switch ($mode) { case 'input': $prof['profile'] = $c_member_profile_list; unset($prof['password']); openpne_forward('pc', 'page', 'o_regist_prof'); exit; case 'confirm': default: $prof['profile'] = $c_member_profile_list; session_name('OpenPNEpcregist'); @session_start(); $_SESSION['prof'] = $_REQUEST; $_REQUEST['prof'] = $prof; openpne_forward('pc', 'page', 'o_regist_prof_confirm'); exit; case 'register': $pre = db_member_c_member_pre4sid($sid); // delete cookie setcookie(session_name(), '', time() - 3600, ini_get('session.cookie_path')); if (IS_GET_EASY_ACCESS_ID != 3 || $pre['is_disabled_regist_easy_access_id']) { // 管理者へ承認申請 if (IS_SNS_ENTRY_CONFIRM) { // c_member_pre にデータ挿入 $c_member_pre_secure = array('session' => $pre['session'], 'nickname' => $prof['nickname'], 'birth_year' => $prof['birth_year'], 'birth_month' => $prof['birth_month'], 'birth_day' => $prof['birth_day'], 'public_flag_birth_year' => $prof['public_flag_birth_year'], 'public_flag_birth_month_day' => $prof['public_flag_birth_month_day'], 'password' => $prof['password'], 'c_password_query_id' => $prof['c_password_query_id'], 'c_password_query_answer' => $prof['c_password_query_answer'], 'pc_address' => $pre['pc_address'], 'regist_address' => $pre['pc_address'], 'is_sns_entry_confirm' => 1); // c_member_pre_profile にデータ挿入 db_member_update_c_member_pre_profile($pre['c_member_pre_id'], $c_member_profile_list); if (OPENPNE_AUTH_MODE == 'pneid') { $c_member_pre_secure['login_id'] = $prof['login_id']; } db_member_update_c_member_pre4c_member_pre_id($pre['c_member_pre_id'], $c_member_pre_secure); openpne_redirect('pc', 'page_o_regist_wait', array('c_member_id' => $u)); } // メンバー登録時の携帯個体識別番号取得設定が「PC・携帯登録時に個体識別番号を必須にする」でない場合、メンバー登録処理をおこなう $c_member = $prof; $c_member['c_member_id_invite'] = $pre['c_member_id_invite']; $c_member_secure = array('password' => $prof['password'], 'password_query_answer' => $prof['c_password_query_answer'], 'pc_address' => $pre['pc_address'], 'ktai_address' => '', 'regist_address' => $pre['pc_address']); // メンバー登録 $u = util_regist_c_member($c_member, $c_member_secure, $c_member_profile_list); // pre の内容を削除 db_member_delete_c_member_pre4sid($sid); // 登録完了メール送信 do_regist_prof_do_regist2_mail_send($u); // 登録完了メール(管理者宛) if (SEND_USER_DATA) { do_common_send_mail_regist4admin($u); } openpne_redirect('pc', 'page_o_regist_end', array('c_member_id' => $u)); } else { // メンバー登録時の携帯個体識別番号取得設定が「PC・携帯登録時に個体識別番号を必須にする」である場合、 // ここでのメンバー登録はすべてスキップする。入力した項目は c_member_pre とc_member_pre_profile に // 保持しておき、携帯の登録が完了した場合に、メンバー登録も完了する // c_member_pre_profile にデータ挿入 db_member_update_c_member_pre_profile($pre['c_member_pre_id'], $c_member_profile_list); // c_member_pre にデータ挿入 $c_member_pre_secure = array('session' => $pre['session'], 'nickname' => $prof['nickname'], 'birth_year' => $prof['birth_year'], 'birth_month' => $prof['birth_month'], 'birth_day' => $prof['birth_day'], 'public_flag_birth_year' => $prof['public_flag_birth_year'], 'public_flag_birth_month_day' => $prof['public_flag_birth_month_day'], 'password' => $prof['password'], 'c_password_query_id' => $prof['c_password_query_id'], 'password_query_answer' => $prof['c_password_query_answer'], 'pc_address' => $pre['pc_address'], 'regist_address' => $pre['pc_address']); if (OPENPNE_AUTH_MODE == 'pneid') { $c_member_pre_secure['login_id'] = $prof['login_id']; } db_member_update_c_member_pre_secure($pre['c_member_pre_id'], $c_member_pre_secure); openpne_redirect('pc', 'page_o_regist_ktai_address', array('sid' => $pre['session'])); } } }
function db_member_k_auth_login($ktai_address, $password) { if (!$ktai_address or !$password) { return false; } $c_member_id = db_member_c_member_id4username($ktai_address, true); $sql = "SELECT hashed_password FROM c_member_secure " . " WHERE c_member_id = ? "; if (md5($password) != db_get_one($sql, array($c_member_id))) { return false; } return $c_member_id; }