Latihan API Login (Authentication Sederhana) menggunakan PHP + MySQL dengan input JSON (raw) di Postman.
Target latihan:
- Membuat tabel user
- Menyimpan password dengan hash
- Membuat endpoint
login.php - Mengirim data JSON dari Postman
- Memvalidasi email & password
Buat Tabel User
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100),
email VARCHAR(100) UNIQUE,
password VARCHAR(255)
);
Insert user contoh (password di-hash) misal buat file password.php lalu akses http://localhost/api-siswa/password.php:
<?php
echo password_hash("admin1234", PASSWORD_DEFAULT);

Ambil hasil hash lalu jalankan di MySQL:
INSERT INTO users (nama, email, password) VALUES
('Admin', 'engkuskusnadifuture@gmail.com', '$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
(Ganti $2y$10$... dengan hasil hash dari PHP)

Endpoint Login (login.php)
<?php
include 'koneksi.php';
header("Content-Type: application/json");
// Ambil data JSON dari body
$data = json_decode(file_get_contents("php://input"), true);
$email = $data['email'] ?? '';
$password = $data['password'] ?? '';
if ($email == '' || $password == '') {
echo json_encode([
"status" => false,
"message" => "Email dan password wajib diisi"
]);
exit;
}
// Cari user berdasarkan email
$query = $conn->query("SELECT * FROM users WHERE email='$email'");
if ($query->num_rows == 0) {
echo json_encode([
"status" => false,
"message" => "Email tidak terdaftar"
]);
exit;
}
$user = $query->fetch_assoc();
// Verifikasi password
if (password_verify($password, $user['password'])) {
echo json_encode([
"status" => true,
"message" => "Login berhasil",
"data" => [
"id" => $user['id'],
"nama" => $user['nama'],
"email" => $user['email']
]
]);
} else {
echo json_encode([
"status" => false,
"message" => "Password salah"
]);
}
Test Login di Postman
- Method: POST
- URL:
http://localhost/api-siswa/login.php
- Headers:
Content-Type: application/json

- Body → raw → JSON:
{
"email": "engkuskusnadifuture@gmail.com",
"password": "admin1234"
}

Response Berhasil
{
"status": true,
"message": "Login berhasil",
"data": {
"id": 1,
"nama": "Admin",
"email": "engkuskusnadifuture@gmail.com"
}
}
Response Gagal
{
"status": false,
"message": "Password salah"
}
Tugas Latihan Mandiri
- Tambahkan endpoint
register.phpdengan input JSON:
{
"nama": "Budi",
"email": "budi@gmail.com",
"password": "123456"
}

- Saat register:
- Password wajib di-hash (
password_hash) - Email tidak boleh sama
- cek
API Login menggunakan user yang baru ditambahkan dengan memasukan email dan password apakah berhasil memunculkan status 200 OK

- Langkah Alur Uji coba :
Register → Login → Akses API GET users