Files
kngil_home/kngil/bbs/join copy.php
2026-01-30 17:20:52 +09:00

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;