diff --git a/login.php b/login.php
new file mode 100644
index 0000000..01ac3d4
--- /dev/null
+++ b/login.php
@@ -0,0 +1,74 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+} catch (Exception $e) {
+ die("DB Error: " . $e->getMessage());
+}
+
+$err = "";
+
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ $user = trim($_POST['username'] ?? '');
+ $pass = $_POST['password'] ?? '';
+
+ if ($user === '' || $pass === '') {
+ $err = "Isi username dan password.";
+ } else {
+ $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :u LIMIT 1");
+ $stmt->execute([':u' => $user]);
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ if ($row && password_verify($pass, $row['password'])) {
+ session_regenerate_id(true);
+ $_SESSION['user'] = $row['username'];
+ header("Location: $redirectAfterLogin");
+ exit;
+ } else {
+ $err = "Username atau password salah.";
+ }
+ }
+}
+?>
+
+
+
+
+Login
+
+
+
+
+
Login
+
+
+
= htmlspecialchars($err) ?>
+
+
+
+
+
+
+
+
diff --git a/register.php b/register.php
new file mode 100644
index 0000000..a98c3e5
--- /dev/null
+++ b/register.php
@@ -0,0 +1,96 @@
+setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+ // create table if not exists
+ $pdo->exec("
+ CREATE TABLE IF NOT EXISTS users (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ username TEXT UNIQUE NOT NULL,
+ password TEXT NOT NULL,
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
+ )
+ ");
+
+} catch (Exception $e) {
+ die("DB Error: " . $e->getMessage());
+}
+
+$err = "";
+$ok = "";
+
+// Regex password: minimal 6, huruf + angka
+function password_valid($p) {
+ return preg_match('/^(?=.*[A-Za-z])(?=.*\d).{6,}$/', $p);
+}
+
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ $user = trim($_POST['username'] ?? '');
+ $pass = $_POST['password'] ?? '';
+ $pass2 = $_POST['password_confirm'] ?? '';
+
+ if ($user === '' || $pass === '' || $pass2 === '') {
+ $err = "Semua field harus diisi.";
+ } elseif ($pass !== $pass2) {
+ $err = "Konfirmasi password tidak cocok.";
+ } elseif (!password_valid($pass)) {
+ $err = "Password minimal 6 karakter, harus mengandung huruf & angka.";
+ } else {
+ try {
+ $hash = password_hash($pass, PASSWORD_DEFAULT);
+ $stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (:u, :p)");
+ $stmt->execute([':u' => $user, ':p' => $hash]);
+ $ok = "Registrasi berhasil, silakan login.";
+ } catch (PDOException $e) {
+ if ($e->getCode() == "23000") {
+ $err = "Username sudah digunakan.";
+ } else {
+ $err = "Error: " . $e->getMessage();
+ }
+ }
+ }
+}
+?>
+
+
+
+
+Register
+
+
+
+
+
Register
+
+
= htmlspecialchars($err) ?>
+
= htmlspecialchars($ok) ?>
+
+
+
+
+ Sudah punya akun?
Login
+
+
+
+