prepare(" SELECT id, username, email FROM data_server WHERE id = :id LIMIT 1 "); } else { $stmt = $pdo->prepare(" SELECT id, username, email, status FROM user_akses WHERE id = :id AND status = 'active' LIMIT 1 "); } $stmt->execute([ ':id' => $idUser ]); $dataUser = $stmt->fetch(PDO::FETCH_ASSOC); if (!$dataUser) { unset($_SESSION['wajib_update_akun']); unset($_SESSION['update_akun_id']); unset($_SESSION['update_akun_tipe']); header("Location: aut_akses.php"); exit; } } catch (PDOException $e) { header("Location: aut_akses.php"); exit; } ?> ManjaPro - Perbarui Akun

Managemen Jaringan Propesional

Username minimal 6 karakter dan password minimal 8 karakter.
Minimal 6 karakter dan maksimal 20 karakter.
20) { sweetAlert( "Username maksimal 20 karakter", "error" ); // ===================================================== // VALIDASI PASSWORD // ===================================================== } elseif ($passwordBaru === '') { sweetAlert( "Password baru harus diisi", "error" ); } elseif (strlen($passwordBaru) < 8) { sweetAlert( "Password minimal 8 karakter", "error" ); } elseif ($passwordBaru !== $konfirmasiPassword) { sweetAlert( "Konfirmasi password tidak sama", "error" ); } else { try { // ===================================================== // CEK USERNAME DI DATA_SERVER // ===================================================== if ($tipeUser === 'master') { $stmt = $pdo->prepare(" SELECT id FROM data_server WHERE ( username = :username OR email = :username ) AND id != :id LIMIT 1 "); } else { /* * Untuk user_akses, tetap cek data_server juga. * * Hal ini penting karena proses login selalu * mencari data_server terlebih dahulu. */ $stmt = $pdo->prepare(" SELECT id FROM data_server WHERE username = :username OR email = :username LIMIT 1 "); } $stmt->execute([ ':username' => $usernameBaru, ...($tipeUser === 'master' ? [':id' => $idUser] : []) ]); $usernameDiMaster = $stmt->fetch(PDO::FETCH_ASSOC); if ($usernameDiMaster) { sweetAlert( "Username sudah digunakan. Silakan gunakan username lain.", "error" ); } else { // ===================================================== // CEK USERNAME DI USER_AKSES // ===================================================== if ($tipeUser === 'user') { $stmt = $pdo->prepare(" SELECT id FROM user_akses WHERE ( username = :username OR email = :username ) AND id != :id LIMIT 1 "); $stmt->execute([ ':username' => $usernameBaru, ':id' => $idUser ]); } else { $stmt = $pdo->prepare(" SELECT id FROM user_akses WHERE username = :username OR email = :username LIMIT 1 "); $stmt->execute([ ':username' => $usernameBaru ]); } $usernameDiUser = $stmt->fetch(PDO::FETCH_ASSOC); if ($usernameDiUser) { sweetAlert( "Username sudah digunakan. Silakan gunakan username lain.", "error" ); } else { // ===================================================== // HASH PASSWORD BARU // ===================================================== $passwordHash = password_hash( $passwordBaru, PASSWORD_DEFAULT ); if ($passwordHash === false) { throw new Exception( "Gagal membuat hash password" ); } // ===================================================== // UPDATE DATABASE // ===================================================== if ($tipeUser === 'master') { $stmtUpdate = $pdo->prepare(" UPDATE data_server SET username = :username, password = :password WHERE id = :id "); } else { $stmtUpdate = $pdo->prepare(" UPDATE user_akses SET username = :username, password = :password WHERE id = :id AND status = 'active' "); } $stmtUpdate->execute([ ':username' => $usernameBaru, ':password' => $passwordHash, ':id' => $idUser ]); // ===================================================== // BERSIHKAN SESSION SEMENTARA // ===================================================== unset($_SESSION['wajib_update_akun']); unset($_SESSION['update_akun_id']); unset($_SESSION['update_akun_tipe']); // ===================================================== // BUAT SESSION LOGIN NORMAL // ===================================================== session_regenerate_id(true); if ($tipeUser === 'master') { $_SESSION['master'] = $idUser; } else { $_SESSION['user'] = $idUser; } // ===================================================== // BERHASIL // ===================================================== sweetAlert( "Username dan Password berhasil diperbarui", "success", baseurl() ); } } } catch (PDOException $e) { sweetAlert( "Gagal memperbarui akun. Terjadi kesalahan pada sistem.", "error" ); // Debugging: // error_log($e->getMessage()); } catch (Exception $e) { sweetAlert( "Gagal memperbarui akun", "error" ); // error_log($e->getMessage()); } } } ?>