0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan8 halaman

Testing Web

Proyek ini adalah sistem CRUD sederhana untuk manajemen data siswa menggunakan PHP dan MySQL, dengan fitur registrasi dan login pengguna. Database db_xitkj3 terdiri dari dua tabel: users dan tb_xitkj3, dan semua interaksi menggunakan prepared statements untuk keamanan. Sistem ini mencakup beberapa file PHP untuk koneksi, registrasi, login, input data siswa, dan pengelolaan data siswa melalui dashboard.

Diunggah oleh

amdchannel48
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan8 halaman

Testing Web

Proyek ini adalah sistem CRUD sederhana untuk manajemen data siswa menggunakan PHP dan MySQL, dengan fitur registrasi dan login pengguna. Database db_xitkj3 terdiri dari dua tabel: users dan tb_xitkj3, dan semua interaksi menggunakan prepared statements untuk keamanan. Sistem ini mencakup beberapa file PHP untuk koneksi, registrasi, login, input data siswa, dan pengelolaan data siswa melalui dashboard.

Diunggah oleh

amdchannel48
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

Ringkasan Eksekutif

Proyek ini adalah sistem sederhana CRUD (Create, Read, Update, Delete)
untuk data siswa menggunakan PHP dan MySQL di lingkungan XAMPP.
Sistem mencakup fungsi registrasi/login pengguna dan manajemen data
siswa. Kami membuat database db_xitkj3 dengan dua tabel: users (untuk
akun) dan tb_xitkj3 (untuk data siswa: id, nama, nis, jurusan). Semua
interaksi database menggunakan prepared statements (mysqli) untuk
keamanan SQL, dan password disimpan sebagai hash. Kode PHP yang
diperlukan meliputi: [Link] (koneksi DB), [Link] (pendaftaran
akun), [Link] (autentikasi), [Link] (form input siswa), [Link]
(tabel data siswa + aksi Edit/Hapus/Tambah), [Link], dan [Link].
Semua halaman kecuali register/login dilindungi dengan sesi agar hanya
pengguna terlogin yang mengakses. Berikut tabel ringkasan file dan
fungsinya:

Nama File Fungsi utama


db_xitkj3.s Skrip SQL: Buat database db_xitkj3 dan tabel users,
ql tb_xitkj3
[Link] Koneksi PHP ke MySQL (db_xitkj3) menggunakan mysqli (host
localhost, user root, password '')[1].
[Link] Form registrasi (username, email, password) + pemrosesan
p penyimpanan akun (hash password, prepared INSERT).
[Link] Form login (username, password) + pemrosesan autentikasi
(verifikasi password, SESSION).
[Link] Form input data siswa (nama, nis, jurusan) + pemrosesan
simpan ke tabel tb_xitkj3.
dashboard.p Daftar seluruh data siswa dalam tabel HTML (SELECT) dengan
hp tombol Edit, Hapus, dan Tambah Data.
[Link] Form edit untuk data siswa yang dipilih (UPDATE melalui
prepared statement).
[Link] Proses menghapus data siswa berdasarkan id (DELETE query)
[2].

Skrip SQL (db_xitkj3.sql)


Buka phpMyAdmin di XAMPP, buat database baru db_xitkj3, lalu jalankan
skrip di bawah di tab SQL. Skrip ini membuat tabel users untuk akun (id PK
auto-inc, username, email, password) dan tabel tb_xitkj3 untuk data siswa
(id PK auto-inc, nama, nis, jurusan). Password akan disimpan sebagai
VARCHAR(255) untuk hash.
-- Buat database
CREATE DATABASE IF NOT EXISTS db_xitkj3;
USE db_xitkj3;

-- Tabel untuk akun pengguna (login/registrasi)


CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uq_username (username),
UNIQUE KEY uq_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabel untuk data siswa


CREATE TABLE IF NOT EXISTS tb_xitkj3 (
id INT NOT NULL AUTO_INCREMENT,
nama VARCHAR(100) NOT NULL,
nis VARCHAR(20) NOT NULL,
jurusan VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

[Link]
File ini membuat koneksi database (mysqli) ke db_xitkj3. Gunakan host
localhost, user root, password kosong. Contoh kode (berdasarkan tutorial
GeeksforGeeks)[1]:
<?php
$servername = "localhost";
$username = "root";
$password = ""; // Asumsi password kosong default di XAMPP
$dbname = "db_xitkj3";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
?>

[Link]
Menampilkan form pendaftaran akun (username, email, password) dan
memproses penyimpanan akun baru. Password disimpan sebagai hash
(menggunakan password_hash). Contoh ringkas:
<?php
session_start();
include '[Link]';
if (isset($_POST['register'])) {
$user = trim($_POST['username']);
$email = trim($_POST['email']);
$pass = $_POST['password'];
// Hash password
$hash = password_hash($pass, PASSWORD_DEFAULT);
// Cek username/email unik (opsional)
$stmt = $conn->prepare("INSERT INTO users (username, email,
password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $user, $email, $hash);
if ($stmt->execute()) {
echo "Registrasi berhasil. <a href='[Link]'>Login di
sini</a>.";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
}
?>
<!DOCTYPE html>
<html>
<head><title>Register</title></head>
<body>
<h2>Form Register</h2>
<form method="post" action="">
Username: <input type="text" name="username" required><br>
Email: <input type="email" name="email" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit" name="register">Register</button>
</form>
</body>
</html>

[Link]
Form login (username, password) dan verifikasi akun. Gunakan SESSION
untuk menyimpan status login. Contoh:
<?php
session_start();
include '[Link]';
if (isset($_POST['login'])) {
$user = trim($_POST['username']);
$pass = $_POST['password'];
$stmt = $conn->prepare("SELECT id, password FROM users WHERE
username=?");
$stmt->bind_param("s", $user);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $hash);
$stmt->fetch();
if (password_verify($pass, $hash)) {
// Login berhasil
$_SESSION['user_id'] = $id;
$_SESSION['username'] = $user;
header("Location: [Link]");
exit();
} else {
echo "Password salah.";
}
} else {
echo "Username tidak ditemukan.";
}
$stmt->close();
}
?>
<!DOCTYPE html>
<html>
<head><title>Login</title></head>
<body>
<h2>Form Login</h2>
<form method="post" action="">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit" name="login">Login</button>
</form>
</body>
</html>

[Link] (Input Data Siswa)


Halaman form input data siswa (nama, NIS, jurusan). Setelah submit, data
disimpan ke tb_xitkj3. Contoh kode:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: [Link]");
exit();
}
include '[Link]';
if (isset($_POST['input_data'])) {
$nama = trim($_POST['nama']);
$nis = trim($_POST['nis']);
$jurusan = trim($_POST['jurusan']);
$stmt = $conn->prepare("INSERT INTO tb_xitkj3 (nama, nis, jurusan)
VALUES (?, ?, ?)");
$stmt->bind_param("sss", $nama, $nis, $jurusan);
if ($stmt->execute()) {
echo "Data siswa berhasil disimpan.";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
}
?>
<!DOCTYPE html>
<html>
<head><title>Input Data Siswa</title></head>
<body>
<h2>Form Input Data Siswa</h2>
<form method="post" action="">
Nama: <input type="text" name="nama" required><br>
NIS: <input type="text" name="nis" required><br>
Jurusan: <input type="text" name="jurusan" required><br>
<button type="submit" name="input_data">Input Data</button>
</form>
<p><a href="[Link]">Lihat Data Siswa</a></p>
</body>
</html>

[Link]
Menampilkan tabel berisi semua data siswa dengan opsi Edit, Hapus, dan
tombol Tambah Data. Hanya bisa diakses setelah login (session). Contoh:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: [Link]");
exit();
}
include '[Link]';
$result = $conn->query("SELECT * FROM tb_xitkj3");
?>
<!DOCTYPE html>
<html>
<head><title>Dashboard</title></head>
<body>
<h2>Data Siswa</h2>
<p><a href="[Link]">Tambah Data</a> | <a
href="[Link]">Logout</a></p>
<table border="1" cellpadding="5">

<tr><th>ID</th><th>Nama</th><th>NIS</th><th>Jurusan</th><th>Aksi</
th></tr>
<?php if ($result && $result->num_rows > 0): ?>
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo htmlspecialchars($row['nama']); ?></td>
<td><?php echo htmlspecialchars($row['nis']); ?></td>
<td><?php echo htmlspecialchars($row['jurusan']); ?></td>
<td>
<a href="[Link]?id=<?php echo $row['id']; ?>">Edit</a> |
<a href="[Link]?id=<?php echo $row['id']; ?>"
onclick="return confirm('Yakin hapus data?')">Hapus</a>
</td>
</tr>
<?php endwhile; ?>
<?php else: ?>
<tr><td colspan="5">Tidak ada data.</td></tr>
<?php endif; ?>
</table>
</body>
</html>

[Link]
Form edit data siswa terpilih. Ambil id dari $_GET, tampilkan form terisi saat
ini lalu proses update. Contoh:
<?php
session_start();
if (!isset($_SESSION['user_id'])) { header("Location: [Link]");
exit(); }
include '[Link]';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$stmt = $conn->prepare("SELECT nama, nis, jurusan FROM tb_xitkj3
WHERE id=?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($nama, $nis, $jurusan);
$stmt->fetch();
$stmt->close();
} else {
header("Location: [Link]");
exit();
}
if (isset($_POST['update'])) {
$nama = trim($_POST['nama']);
$nis = trim($_POST['nis']);
$jurusan = trim($_POST['jurusan']);
$stmt = $conn->prepare("UPDATE tb_xitkj3 SET nama=?, nis=?,
jurusan=? WHERE id=?");
$stmt->bind_param("sssi", $nama, $nis, $jurusan, $id);
if ($stmt->execute()) {
header("Location: [Link]");
exit();
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
}
?>
<!DOCTYPE html>
<html>
<head><title>Edit Data Siswa</title></head>
<body>
<h2>Edit Data Siswa</h2>
<form method="post" action="">
Nama: <input type="text" name="nama" value="<?php echo
htmlspecialchars($nama); ?>" required><br>
NIS: <input type="text" name="nis" value="<?php echo
htmlspecialchars($nis); ?>" required><br>
Jurusan: <input type="text" name="jurusan" value="<?php echo
htmlspecialchars($jurusan); ?>" required><br>
<button type="submit" name="update">Update</button>
</form>
<p><a href="[Link]">Kembali ke Dashboard</a></p>
</body>
</html>

[Link]
Script untuk menghapus data siswa berdasarkan id (dioper via $_GET).
Contoh:
<?php
session_start();
if (!isset($_SESSION['user_id'])) { header("Location: [Link]");
exit(); }
include '[Link]';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$stmt = $conn->prepare("DELETE FROM tb_xitkj3 WHERE id=?");
$stmt->bind_param("i", $id);
if ($stmt->execute()) {
$stmt->close();
header("Location: [Link]");
exit();
} else {
echo "Error: " . $stmt->error;
}
}
?>

Petunjuk Penggunaan
1. Impor SQL: Jalankan file db_xitkj3.sql di phpMyAdmin untuk
membuat database dan tabel.
2. Letak File: Simpan semua file PHP di folder proyek Anda (misal
htdocs/xitkj3/). File [Link], [Link], [Link], [Link],
[Link], [Link], [Link].
3. Mulai XAMPP: Aktifkan Apache & MySQL di Control Panel XAMPP.
4. Akses Website: Buka di browser:

5. [Link] untuk registrasi akun baru.

6. Setelah register, login di [Link]


7. Setelah login, akses [Link] untuk melihat dan mengelola data
siswa.
8. Login/Logout: [Link] juga perlu dibuat untuk sesi. (Kode logout
sederhana: session_destroy() dan redirect ke login.)
Catatan: Semua query menggunakan prepared statements seperti
dicontohkan oleh manual PHP[3] untuk keamanan. Kode di atas merupakan
adaptasi umum (original) berdasarkan praktik PHP-MySQL standar.
Referensi: Kode dan metode diilhami oleh dokumentasi resmi PHP/MySQL
dan tutorial terkait[1][3][2].

Anda mungkin juga menyukai