160 lines
4.0 KiB
PHP
160 lines
4.0 KiB
PHP
<?php
|
|
require_once $_SERVER['DOCUMENT_ROOT'].'/kngil/bbs/db_conn.php';
|
|
header('Content-Type: application/json');
|
|
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$action = $data['action'] ?? '';
|
|
|
|
/* =================================================
|
|
아이디 중복확인 (fn_user_id_check 사용)
|
|
================================================= */
|
|
if ($action === 'check_id') {
|
|
|
|
$userId = trim($data['userId'] ?? '');
|
|
|
|
if (!preg_match('/^[a-zA-Z][a-zA-Z0-9]{3,11}$/', $userId)) {
|
|
echo json_encode([
|
|
'available' => 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; |