Membuat Daftar dan Login Sederhana Menggunakan PHP

Membuat Daftar dan Login Sederhana Menggunakan PHP

Pertama membuat Table databasenya

CREATE TABLE users (
  id INT(11) AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL
);

Kolom "id" adalah kolom id pengguna yang akan di-generate secara otomatis oleh database dengan tipe data INT. Kolom "username" adalah kolom untuk menyimpan nama pengguna (username) yang harus unik (dinyatakan dengan constraint UNIQUE) dan tidak boleh kosong (dinyatakan dengan NOT NULL). Kolom "password" adalah kolom untuk menyimpan password pengguna yang telah di-hash (dinyatakan dengan NOT NULL).

Pendaftaran (register.php):

<!DOCTYPE html>
<html>
<head>
    <title>Pendaftaran Pengguna Baru</title>
</head>
<body>
    <h2>Pendaftaran Pengguna Baru</h2>
    <form method="post" action="proses_daftar.php">
        <label>Username:</label>
        <input type="text" name="username" required><br><br>
        <label>Password:</label>
        <input type="password" name="password" required><br><br>
        <label>Konfirmasi Password:</label>
        <input type="password" name="password2" required><br><br>
        <input type="submit" name="daftar" value="Daftar">
    </form>
    <p>Sudah punya akun? <a href="login.php">Login di sini</a></p>
</body>
</html>

Proses pendaftaran (proses_daftar.php):

<?php
if(isset($_POST['daftar'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $password2 = $_POST['password2'];

    if($password != $password2){
        echo "Konfirmasi password tidak cocok";
        exit;
    }

    // Proses simpan data ke database

    echo "Pendaftaran berhasil, silakan login <a href='login.php'>di sini</a>";
}
?>

Login (login.php):

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form method="post" action="proses_login.php">
        <label>Username:</label>
        <input type="text" name="username" required><br><br>
        <label>Password:</label>
        <input type="password" name="password" required><br><br>
        <input type="submit" name="login" value="Login">
    </form>
    <p>Belum punya akun? <a href="register.php">Daftar di sini</a></p>
</body>
</html>

Proses login (proses_login.php):

<?php
session_start();

if(isset($_POST['login'])){
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Proses validasi username dan password di database

    if($username == 'admin' && $password == 'admin'){
        $_SESSION['username'] = $username;
        header("Location: dashboard.php");
        exit;
    }else{
        echo "Username atau password salah";
    }
}
?>

dashboard.php:

<?php
session_start();

if(!isset($_SESSION['username'])){
    header("Location: login.php");
    exit;
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Dashboard</title>
</head>
<body>
    <h2>Selamat datang, <?php echo $_SESSION['username']; ?>!</h2>
    <p>Ini adalah halaman dashboard Anda.</p>
    <a href="logout.php">Logout</a>
</body>
</html>

Kode tersebut akan mengecek apakah ada sesi pengguna yang aktif dengan menggunakan fungsi session_start() dan memeriksa apakah variabel $_SESSION['username'] sudah diatur atau belum. Jika belum, maka akan langsung diarahkan ke halaman login.php.

Jika sudah ada sesi pengguna aktif, maka halaman dashboard akan ditampilkan dengan menampilkan pesan selamat datang dan tombol logout.

logout.php:

<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit;
?>

Kode tersebut akan menghancurkan sesi pengguna yang aktif menggunakan fungsi session_unset() dan session_destroy(). Kemudian, pengguna akan diarahkan kembali ke halaman login.php menggunakan fungsi header().