if (!$conn) {
echo "Koneksi Gagal!
";
die(print_r(sqlsrv_errors(), true));
}
// 2. Inisialisasi variabel input
$errors = [];
$user_id = $_POST['reg_username'] ?? '';
$passwd = $_POST['reg_password'] ?? '';
$passwd2 = $_POST['reg_password2'] ?? '';
$email = $_POST['reg_email'] ?? '';
$hint = $_POST['reg_hint'] ?? '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['reg_submit'])) {
// Validasi input
if (!$user_id || !$passwd || !$passwd2 || !$email || !$hint) {
$errors[] = "Semua kolom wajib diisi. 所有必填栏都必须填写。";
}
if (strlen($user_id) < 6 || strlen($user_id) > 16) {
$errors[] = "User ID harus antara 6-16 karakter. 用户ID必须是6到16个字符。";
}
if ($passwd !== $passwd2) {
$errors[] = "Password dan konfirmasi password tidak sama. 密码和确认密码不匹配。";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Email tidak valid. 邮箱无效。";
}
if (empty($errors)) {
// 3. Cek apakah user_id sudah ada
// Menggunakan database [MEMBER] sesuai logika awal Anda
$sql_check = "SELECT COUNT(*) AS count FROM [MEMBER].dbo.GM_MEMBER WHERE user_id = ?";
$params_check = array($user_id);
$stmt_check = sqlsrv_query($conn, $sql_check, $params_check);
if ($stmt_check === false) {
die(print_r(sqlsrv_errors(), true));
}
$row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC);
if ($row['count'] > 0) {
$errors[] = "User ID sudah digunakan. 用户ID已被占用。";
}
sqlsrv_free_stmt($stmt_check);
}
if (empty($errors)) {
$reg_ip = $_SERVER['REMOTE_ADDR'] ?? '';
$site_code = 'LUMINARY';
$pwdmd5 = md5($passwd);
// 4. Eksekusi Stored Procedure GM_MEMBER_INS
// Sintaks {CALL ...} adalah cara standar sqlsrv untuk memanggil SP
$exec_query = "{CALL [MEMBER].dbo.GM_MEMBER_INS(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}";
$params_ins = [
array($user_id, SQLSRV_PARAM_IN),
array($passwd, SQLSRV_PARAM_IN),
array($email, SQLSRV_PARAM_IN),
array('', SQLSRV_PARAM_IN), // f_name
array('', SQLSRV_PARAM_IN), // l_name
array('1', SQLSRV_PARAM_IN), // mail_recv_yn
array('', SQLSRV_PARAM_IN), // user_gender
array('', SQLSRV_PARAM_IN), // user_birthday
array('', SQLSRV_PARAM_IN), // country
array('', SQLSRV_PARAM_IN), // street1
array('', SQLSRV_PARAM_IN), // street2
array('', SQLSRV_PARAM_IN), // city
array('', SQLSRV_PARAM_IN), // stateorprovince
array('', SQLSRV_PARAM_IN), // zipcode
array($reg_ip, SQLSRV_PARAM_IN),
array($site_code, SQLSRV_PARAM_IN)
];
$res = sqlsrv_query($conn, $exec_query, $params_ins);
if ($res) {
// 5. Update Hint dan MD5 (Karena SP bawaan Atlantica biasanya tidak memasukkan Hint)
$update_query = "UPDATE [MEMBER].dbo.GM_MEMBER SET Hint = ?, pwdmd5 = ? WHERE user_id = ?";
$params_upd = array($hint, $pwdmd5, $user_id);
sqlsrv_query($conn, $update_query, $params_upd);
echo "";
exit;
} else {
$errors[] = "Registrasi gagal 注册失败: " . print_r(sqlsrv_errors(), true);
}
}
}
?>
Registrasi Akun注册账户
Register Account
注册账户