Membuat Fitur Register di PHP

Halaman register atau daftar sangat diperlukan pada situs web yang menyediakan layanan mereka, tetapi kebanyakan diantaranya untuk membuat aplikasi web sendiri yang menyediakan sistem login dan register. Agar Anda bisa memulai tutorial ini, saya menganggap Anda sudah pernah mengikuti tutorial CRUD PHP dan SQL. kalau tidak Anda bisa langsung saja mengikuti tutorial ini secara bertahap.

Daftar isi:

Baca juga:

Skrip register

Silakan masuk ke berkas register.php kemudian letakan skrip dibawah ini untuk memproses register yang akan menyimpan username dan password, letakan skrip ini antara tag <h1> dan <form>.

<?php
    // bila menekan tombol register maka akan masuk
    if (isset($_POST['register'])) {
        $username = $_POST['username']; // mengambil nilai username
        // password akan di hashing terlebih dahulu
        $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

        // proses menambahkan ke tabel basis data
        $sql = "INSERT INTO users(username, password) VALUES('{$username}', '$password')";

        $result = $conn->prepare($sql);

        // jika berhasil maka true
        if ($result->execute()) {
            echo 'berhasil';
        } else {
            echo 'gagal';
        }
    }
?>

Catatan: Anda bisa menganti algoritma hashing selain dari PASSWORD_DEFAULT seperti PASSWORD_BCRYPT, PASSWORD_ARGON2I (PHP v7.2.0), dan PASSWORD_ARGON2ID (PHP v7.3.0). Silakan kunjungi situs resmi PHP untuk membahas password_hash.

Mengingat nilai input

Pada saat Anda menginput nilai pada bidang username maka akan hilang begitu saja ketika proses register gagal. Saya sendiri merasa tidak nyaman karena sering kali mengulang-ulang mengisi bidang username tersebut. Maka cara terbaik ialah menggunakan Magic Methods PHP yaitu $_POST, contohnya seperti berikut ini:

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

Jadi, bila nilai username ada maka akan mengeluarkan nilai username ($_POST['username']) kalau tidak ada nilai username maka akan mengeluarkan nilai kosong ('').

Catatan: Silakan tambahkan atribut value tersebut ke input username, bukan berarti Anda akan menganti keseluruhan.

Menambahkan agar username tidak duplikat

Anda dapat menambah proses register agar username tidak duplikat di tabel users, hal ini dilakukan agar tidak terjadi redudansi data atau data yang berulang pada field username pada tabel users. Jadi, sebelum proses menambahkan data baik username dan password, maka username di proses terlebih dahulu apakah username sudah ada atau tidak sebelumnya. Kalau username ada maka akan menampilkan notifikasi bahwa username sudah terdaftar, kalau tidak maka akan memproses menambahkan data ke tabel users. Lihat dibawah ini:

// mengeluarkan field username
$sql = "SELECT username FROM users WHERE username = '$username'";

$result = $conn->prepare($sql);
$result->execute();
$user = $result->fetch(PDO::FETCH_OBJ);

/**
 * jika variabel $user ada maka true
 * tetapi ini menggunakan operator NOT maka kebalikannya
 */
if (!$user) {
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

    $sql = "INSERT INTO users(username, password) VALUES('$username', '$password')";

    $result = $conn->prepare($sql);
    if ($result->execute()) {
        echo 'berhasil';
    } else {
        echo 'gagal';
    }
} else {
    echo 'username sudah didaftarkan.';
}

Baca juga: Operator Pada PHP

Jika sudah mengikuti tutorial diatas maka akan menghasilkan skrip seperti gambar dibawah ini:

hasil skrip register


profil

DITULIS OLEH

Febri Hidayan

Berikan saya sponsor terbaik Anda agar saya tetap semangat menulis artikel yang bermanfaat. Terimakasih 😊