From a8b4da04c6651dc251b31eb1f9d989246565a236 Mon Sep 17 00:00:00 2001 From: farrel Date: Mon, 1 Dec 2025 10:18:44 +0700 Subject: [PATCH] menambahkan user login --- login.php | 74 ++++++++++++++++++++++++++++++++++++++++ register.php | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 login.php create mode 100644 register.php 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

+ + +
+ + +
+ + + +
+ + +
+ + 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

+ +
+
+ +
+ + + + +
+ + +
+ +