GNU nano 7.
2
APICrud.php
'result' => mysqli_query($connection, $sql) ? 'OK' : 'ERR',
'message' => mysqli_error($connection),
];
break;
// ✅ Tambahan login
case 'login':
$tbl = $_POST['tbl'] ?? '';
$username = strtolower(trim($_POST['username'] ?? ''));
$password = $_POST['password'] ?? '';
// Validasi nama tabel
$allowedTables = ['accounts'];
if (!in_array($tbl, $allowedTables)) {
$respon[$index] = [
'result' => 'FAILED',
'message' => 'Table tidak diizinkan'
];
break;
}
// Validasi username
if (!preg_match('/^[a-z0-9]{4,20}$/', $username)) {
$respon[$index] = [
'result' => 'FAILED',
'message' => 'Username tidak valid (4-20 karakter huruf/angka)'
];
break;
}
if (empty($password)) {
$respon[$index] = [
'result' => 'FAILED',
'message' => 'Password tidak boleh kosong'
];
break;
}
// Query aman pakai prepared statement
$stmt = mysqli_prepare($connection, "SELECT id, username, password FROM $tbl
WHERE username = ?");
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$user = mysqli_fetch_assoc($result);
if ($user && $user['password'] === $password) {
// Atau jika password_hash():
// if (password_verify($password, $user['password'])) {
$respon[$index] = [
'result' => 'OK',
'message' => 'Login berhasil',
'id' => $user['id'],
'username' => $user['username']
];
} else {
$respon[$index] = [
'result' => 'ERR',
'message' => 'Username atau password salah'
];
}
break;
// ===== OUTPUT JSON =====
echo json_encode($respon, JSON_PRETTY_PRINT);
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute
^C Location M-U Undo M-A Set Mark M-] To Bracket M-Q
Previous ^B Back ^◂ Prev Word ^A Home ^P Prev Line
M-▴ Scroll Up
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify
^/ Go To Line M-E Redo M-6 Copy ^Q Where Was M-W Next
^F Forward ^▸ Next Word ^E End ^N Next Line M-▾ Scroll
Down