Masuk Aplikasi
prepare("
SELECT
id,
nama_pemilik,
username,
email,
akses,
profile,
password
FROM data_server
WHERE username = :username
OR email = :username
LIMIT 1
");
$stmt->execute([
':username' => $username
]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
// =====================================================
// JIKA DITEMUKAN DI DATA_SERVER
// =====================================================
if ($user) {
if (password_verify($password, $user['password'])) {
// ---------------------------------------------
// Update last_login
// ---------------------------------------------
$stmtUpdate = $pdo->prepare("
UPDATE data_server
SET last_login = :waktu
WHERE id = :id
");
$stmtUpdate->execute([
':waktu' => $waktu,
':id' => $user['id']
]);
// ---------------------------------------------
// Cek standar username dan password
// ---------------------------------------------
$usernameKurang = mb_strlen($user['username']) < 6;
$passwordKurang = strlen($password) < 8;
// ---------------------------------------------
// Jika username/password belum memenuhi standar
// ---------------------------------------------
if ($usernameKurang || $passwordKurang) {
session_regenerate_id(true);
$_SESSION['wajib_update_akun'] = true;
$_SESSION['update_akun_id'] = $user['id'];
$_SESSION['update_akun_tipe'] = 'master';
header("Location: update_akun.php");
exit;
}
// ---------------------------------------------
// Login normal
// ---------------------------------------------
session_regenerate_id(true);
$_SESSION['master'] = $user['id'];
sweetAlert(
"Login Berhasil",
"success",
baseurl()
);
} else {
sweetAlert(
"Login Gagal.. Username atau Password Tidak terdaftar",
"error"
);
}
} else {
// =====================================================
// 2. CEK USER_AKSES
// =====================================================
//
// Hanya user status ACTIVE yang boleh login
//
$stmt = $pdo->prepare("
SELECT
id,
id_data_server,
id_group_akses,
nama,
nomor_whatsapp,
username,
password,
profile,
email,
status
FROM user_akses
WHERE (
username = :username
OR email = :username
)
AND status = 'active'
LIMIT 1
");
$stmt->execute([
':username' => $username
]);
$user1 = $stmt->fetch(PDO::FETCH_ASSOC);
// =====================================================
// USER_AKSES DITEMUKAN
// =====================================================
if ($user1) {
if (password_verify($password, $user1['password'])) {
// ---------------------------------------------
// Update last_login
// ---------------------------------------------
$stmtUpdate = $pdo->prepare("
UPDATE user_akses
SET last_login = :waktu
WHERE id = :id
");
$stmtUpdate->execute([
':waktu' => $waktu,
':id' => $user1['id']
]);
// ---------------------------------------------
// Cek standar username/password
// ---------------------------------------------
$usernameKurang = mb_strlen($user1['username']) < 6;
$passwordKurang = strlen($password) < 8;
// ---------------------------------------------
// Wajib update akun
// ---------------------------------------------
if ($usernameKurang || $passwordKurang) {
session_regenerate_id(true);
$_SESSION['wajib_update_akun'] = true;
$_SESSION['update_akun_id'] = $user1['id'];
$_SESSION['update_akun_tipe'] = 'user';
header("Location: update_akun.php");
exit;
}
// ---------------------------------------------
// Login normal
// ---------------------------------------------
session_regenerate_id(true);
$_SESSION['user'] = $user1['id'];
sweetAlert(
"Login Berhasil",
"success",
baseurl()
);
} else {
sweetAlert(
"Login Gagal.. Username atau Password Tidak terdaftar",
"error"
);
}
} else {
/*
* User tidak ditemukan.
*
* Termasuk user yang username/email benar
* tetapi status = inactive.
*
* Sengaja tidak dibedakan supaya informasi
* status akun tidak dibocorkan dari halaman login.
*/
sweetAlert(
"Login Gagal.. Username atau Password Tidak terdaftar atau akun tidak aktif",
"error"
);
}
}
} catch (PDOException $e) {
sweetAlert(
"Login Gagal.. Terjadi kesalahan pada sistem",
"error"
);
// Aktifkan hanya untuk debugging:
// error_log($e->getMessage());
}
}
}
?>