Membuat Fitur Login di PHP

Tentu saja fitur login tidak kalah penting di situs web Anda agar pengguna dapat masuk ke aplikasi yang Anda buat. Kalau ada fitur register tetapi tidak ada fitur login tentu terdengar aneh bagi saya dan juga Anda.

Daftar isi:

Skrip login

Seperti di register letakan skrip dibawah ini pada berkas login.php letakan di antara tag HTML <h1> dan <form>, berikut skripnya:

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

    $sql = "SELECT username, password FROM users WHERE username = '$username'";

    $result = $conn->prepare($sql);
    $result->execute();
    $user = $result->fetch(PDO::FETCH_OBJ);
    
    if (password_verify($password, $user->password)) {
        $_SESSION['user_login'] = $user->username;
        header('Location:index.php');
    } else {
        echo 'password Anda salah';
    }
}

Catatan: Mungkin Anda akan bertanya-tanya apa fungsi password_verify() seperti contoh skrip diatas. Fungsi tersebut akan memverifikasi apakah password yang diinput dan password telah dihashing dari basis data apakah sama. Kalau sama maka mengembalikan nilai true kalau tidak maka false. Perlu diketahui juga, kalau password tersebut sangat sensitif terhadap huruf besar dan kecil. Bila password yang di input di register terdapat huruf besar dan kecil, maka waktu login juga seperti itu.

Mengingat nilai input

Sama seperti tutorial fitur register yang menggunakan atribut value untuk mengeluarkan nilai, tetapi dengan cara apakah $_POST['username'] sudah ada memiliki nilai atau tidak. Kalau ada maka akan mengeluarkan nilai sebelumnya dan begitu pula sebaliknya. Berikut contohnya:

<input value="<?= isset($_POST['username']) ? $_POST['username'] : '' ?>" >

Mencegah username belum terdaftar

Perbedaan antara tutorial register dan login bisa Anda perhatikan bahwa skirp SQL hanya digunakan sekali saja pada login. Karena di fitur login tidak ada yang namanya menambahkan data ke basis data, tetapi hanya ingin melihat semua nilai data berupa username dan password. Lihat pada pernyataan if ($user) yang tidak memiliki tanda NOT (!) sebagaimana di register, karena di login harus pengguna yang sudah terdaftar yang bisa masuk. Kalau tidak akan memberikan notifikasi username belum didaftarkan, lihat skrip berikut:

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

    $sql = "SELECT username, password FROM users WHERE username = '$username'";

    $result = $conn->prepare($sql);
    $result->execute();
    $user = $result->fetch(PDO::FETCH_OBJ);
    
    // jika $user memiliki nilai maka true
    if ($user) {
        if (password_verify($password, $user->password)) {
            $_SESSION['user_login'] = $user->username;
            header('Location:index.php');
        } else {
            echo 'password Anda salah';
        }
    } else {
        echo 'username belum didaftarkan.';
    }
}

Membuat Login dan Register PHP


1. Persiapan Login dan Register PHP

2. Struktur Berkas dan Koneksi Database PHP PDO

3. Membuat Fitur Register di PHP

4. Membuat Fitur Login di PHP

5. Membuat Notifikasi Login dan Register

6. Membuat Autentikasi Pada PHP

7. Fitur Remember Me di Login Pada PHP

8. Membuat Fitur Multi User PHP