false, 'message' => '아이디 형식 오류' ]); exit; } $stmt = $pdo->prepare(" SELECT kngil.fn_user_id_check(:user_id) "); $stmt->execute([ ':user_id' => $userId ]); $result = trim($stmt->fetchColumn()); if (strpos($result, 'SUCCESS') === 0) { echo json_encode([ 'available' => true, 'message' => '사용 가능한 아이디입니다.' ]); } else { echo json_encode([ 'available' => false, 'message' => '이미 존재하는 아이디입니다.' ]); } exit; } /* ================================================= 1. 필수값 검증 ================================================= */ $required = [ 'memberType', // 회원유형 'userId', 'password', 'userName', 'email', 'phone' ]; foreach ($required as $k) { if (empty($data[$k])) { echo json_encode([ 'success' => false, 'message' => '필수 항목이 누락되었습니다.' ]); exit; } } /* ================================================= 2. 회원유형 → co_bc 매핑 ================================================= */ /* 기업회원 : '1' 개인회원 : '2' → 실제 코드값은 여기서 통제 */ $co_bc = ($data['memberType'] === '1') ? 'CB100100' // 기업 : 'CB100200'; // 개인 /* ================================================= 3. 비밀번호 규칙 + 암호화 ================================================= */ if (!preg_match('/^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*]).{12,}$/', $data['password'])) { echo json_encode([ 'success' => false, 'message' => '비밀번호 규칙이 올바르지 않습니다.' ]); exit; } $hashedPw = password_hash($data['password'], PASSWORD_DEFAULT); /* ================================================= 4. 이메일 형식 ================================================= */ if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) { echo json_encode([ 'success' => false, 'message' => '이메일 형식 오류' ]); exit; } /* ================================================= 5. 프로시저 호출 ================================================= */ try { $stmt = $pdo->prepare(" SELECT kngil.sp_member_i( :p_co_bc, :p_member_id, :p_user_pw, :p_member_nm, :p_email, :p_tel_no, :p_co_nm, :p_dept_nm, :p_cid ) AS result "); $stmt->execute([ ':p_co_bc' => $co_bc, ':p_member_id' => $data['userId'], ':p_user_pw' => $hashedPw, ':p_member_nm' => $data['userName'], ':p_email' => $data['email'], ':p_tel_no' => $data['phone'], ':p_co_nm' => $data['company'] ?? null, ':p_dept_nm' => $data['department'] ?? null, ':p_cid' => $data['userId'] ]); $result = $stmt->fetchColumn(); if ($result === 'SUCCESS') { echo json_encode([ 'success' => true ]); } else { echo json_encode([ 'success' => false, 'message' => $result ]); } } catch (Exception $e) { echo json_encode([ 'success' => false, 'message' => '서버 오류' ]); } echo json_encode([ 'success' => false, 'message' => 'Invalid action' ]); exit;