Memperbaiki register
This commit is contained in:
parent
6fc5352be1
commit
f3ac99887d
16
login.php
16
login.php
@ -2,7 +2,7 @@
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
include 'db.php'; // Pastikan file koneksi PDO Anda benar
|
||||
include 'db.php';
|
||||
|
||||
session_start();
|
||||
|
||||
@ -18,18 +18,18 @@ if (isset($_POST['login'])) {
|
||||
} else {
|
||||
try {
|
||||
// 1. Ambil data user berdasarkan username
|
||||
// Menggunakan Prepared Statement (Aman dari SQL Injection)
|
||||
// Menggunakan Prepared Statement
|
||||
$stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
|
||||
$stmt->execute([$username_input]);
|
||||
$user_data = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
// 2. Verifikasi Password
|
||||
// password_verify akan mencocokkan input user dengan HASH di database (seperti milik 'bejo')
|
||||
// password_verify akan mencocokkan input user dengan HASH di database
|
||||
if ($user_data && password_verify($pass, $user_data['password'])) {
|
||||
|
||||
// Login Berhasil!
|
||||
|
||||
// Regenerasi ID Session (Security Best Practice)
|
||||
// Regenerasi ID Session
|
||||
session_regenerate_id(true);
|
||||
|
||||
// Simpan data ke session
|
||||
@ -37,7 +37,7 @@ if (isset($_POST['login'])) {
|
||||
$_SESSION['username'] = $user_data['username'];
|
||||
$_SESSION['login'] = true;
|
||||
|
||||
// Arahkan ke halaman game (sesuai gambar pertama Anda)
|
||||
// Arahkan ke halaman game
|
||||
header("Location: sudoku.php");
|
||||
exit();
|
||||
|
||||
@ -51,14 +51,10 @@ if (isset($_POST['login'])) {
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Login</title>
|
||||
<style>
|
||||
/* Style disamakan persis dengan register.php Anda */
|
||||
body { font-family: Arial; background:#eef2f7; display:flex; height:100vh; justify-content:center; align-items:center; margin:0; }
|
||||
.card { width:350px; background:white; padding:20px; border-radius:10px; box-shadow:0 6px 20px rgba(0,0,0,0.1); }
|
||||
.input { width:100%; padding:10px; margin:8px 0; border:1px solid #ccc; border-radius:8px; box-sizing: border-box; }
|
||||
|
||||
108
register.php
108
register.php
@ -2,83 +2,95 @@
|
||||
ini_set('display_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
include 'db.php'; // Pastikan $conn ada di sini
|
||||
include 'db.php';
|
||||
|
||||
session_start();
|
||||
|
||||
$err = ''; // Variabel untuk pesan error
|
||||
$ok = ''; // Variabel untuk pesan sukses
|
||||
|
||||
// Regex password: minimal 6, huruf + angka
|
||||
function password_valid($p) {
|
||||
return preg_match('/^(?=.*[A-Za-z])(?=.*\d).{6,}$/', $p);
|
||||
}
|
||||
$err = '';
|
||||
$success = '';
|
||||
$username_input = '';
|
||||
|
||||
if (isset($_POST['register'])) {
|
||||
// 1. Ambil dan bersihkan input
|
||||
$user = trim($_POST['username'] ?? '');
|
||||
$username_input = trim($_POST['username'] ?? '');
|
||||
$pass = $_POST['password'] ?? '';
|
||||
$pass2 = $_POST['password_confirm'] ?? '';
|
||||
$konfirmasi_pass = $_POST['konfirmasi_password'] ?? '';
|
||||
|
||||
// 2. Validasi Input
|
||||
if ($user === '' || $pass === '' || $pass2 === '') {
|
||||
$err = "Semua field harus diisi.";
|
||||
} elseif ($pass !== $pass2) {
|
||||
if ($username_input === '' || $pass === '' || $konfirmasi_pass === '') {
|
||||
$err = "Semua kolom wajib diisi.";
|
||||
}
|
||||
elseif ($pass !== $konfirmasi_pass) {
|
||||
$err = "Konfirmasi password tidak cocok.";
|
||||
} elseif (!password_valid($pass)) {
|
||||
$err = "Password minimal 6 karakter, harus mengandung huruf & angka.";
|
||||
} else {
|
||||
}
|
||||
elseif (strlen($pass) < 6) {
|
||||
$err = "Password terlalu pendek. Minimal 6 karakter.";
|
||||
}
|
||||
else {
|
||||
try {
|
||||
// 3. Hash Password (Keamanan Kritis!)
|
||||
$hash = password_hash($pass, PASSWORD_DEFAULT);
|
||||
$check = $conn->prepare("SELECT id FROM users WHERE username = ?");
|
||||
$check->execute([$username_input]);
|
||||
|
||||
// 4. Prepared Statement (Mencegah SQL Injection)
|
||||
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
|
||||
$stmt->execute([$user, $hash]); // Eksekusi query dengan data
|
||||
|
||||
$ok = "Registrasi berhasil, silakan login.";
|
||||
|
||||
} catch (PDOException $e) {
|
||||
// Tangani error jika username sudah ada (Unique Constraint)
|
||||
if ($e->getCode() == "23000") {
|
||||
$err = "Username sudah digunakan.";
|
||||
if($check->rowCount() > 0){
|
||||
$err = "Username sudah terdaftar, silakan pilih nama lain.";
|
||||
} else {
|
||||
$err = "Error: Terjadi kesalahan saat registrasi database.";
|
||||
$hashed_pass = password_hash($pass, PASSWORD_DEFAULT);
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
|
||||
$stmt->execute([$username_input, $hashed_pass]);
|
||||
|
||||
$success = "Registrasi berhasil! Silakan <a href='login.php'>Login disini</a>.";
|
||||
|
||||
$username_input = '';
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
$err = "Terjadi kesalahan sistem: " . $e->getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Register</title>
|
||||
<title>Daftar Akun Baru</title>
|
||||
<style>
|
||||
body { font-family: Arial; background:#eef2f7; display:flex; height:100vh; justify-content:center; align-items:center; margin:0; }
|
||||
.card { width:350px; background:white; padding:20px; border-radius:10px; box-shadow:0 6px 20px rgba(0,0,0,0.1); }
|
||||
.input { width:100%; padding:10px; margin:8px 0; border:1px solid #ccc; border-radius:8px; }
|
||||
.btn { width:100%; padding:12px; background:#28a745; color:white; border:none; border-radius:8px; cursor:pointer; }
|
||||
.err { color:#d00000; margin-bottom:10px; text-align:center; }
|
||||
.ok { color:green; margin-bottom:10px; text-align:center; }
|
||||
.link { text-align:center; margin-top:10px; }
|
||||
.input { width:100%; padding:10px; margin:8px 0; border:1px solid #ccc; border-radius:8px; box-sizing: border-box; }
|
||||
.btn { width:100%; padding:12px; background:#28a745; color:white; border:none; border-radius:8px; cursor:pointer; font-weight: bold;}
|
||||
.btn:hover { background:#218838; }
|
||||
.err { color:#721c24; margin-bottom:10px; text-align:center; background: #f8d7da; padding: 10px; border-radius: 5px; border: 1px solid #f5c6cb; font-size: 14px;}
|
||||
.success { color:#155724; margin-bottom:10px; text-align:center; background: #d4edda; padding: 10px; border-radius: 5px; border: 1px solid #c3e6cb;}
|
||||
.link { text-align:center; margin-top:10px; font-size: 14px; color: #666; }
|
||||
a { text-decoration: none; color: #007bff; }
|
||||
h2 { text-align: center; margin-top: 0; color: #333; }
|
||||
p { text-align:center; color:gray; font-size: 14px; margin-bottom: 20px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="card">
|
||||
<h2>Register</h2>
|
||||
|
||||
<?php if ($err): ?>
|
||||
<div class="err"><?= htmlspecialchars($err) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($success): ?>
|
||||
<div class="success"><?= $success ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="POST" action="register.php">
|
||||
<input class="input" type="text" name="username" placeholder="Masukkan Username">
|
||||
<input class="input" type="password" name="password" placeholder="Masukkan Password">
|
||||
<input class="input" type="password" name="password_confirm" placeholder="Konfirmasi Password">
|
||||
<button class="btn" type="submit" name="register">Daftar</button>
|
||||
<form method="POST" action="">
|
||||
<input class="input" type="text" name="username" placeholder="Username" value="<?= htmlspecialchars($username_input) ?>" required autocomplete="off">
|
||||
|
||||
<input class="input" type="password" name="password" placeholder="Password (Min 6 huruf)" required minlength="6">
|
||||
|
||||
<input class="input" type="password" name="konfirmasi_password" placeholder="Ulangi Password" required>
|
||||
|
||||
<button type="submit" name="register" class="btn">Daftar Sekarang</button>
|
||||
</form>
|
||||
|
||||
|
||||
<div class="link">
|
||||
Sudah punya akun? <a href="login.php">Login</a>
|
||||
Sudah punya akun? <a href="login.php">Login disini</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user