Tutorial PHP : #20 Membuat Form Login Dengan PHP dan MySQL

Login adalah proses yang paling penting pada sebuah website, aplikasi yang berbasis website maupun aplikasi lainnya yang membatasi akses oleh user agar tidak dapat mengakses bagian dalam sistem misalnya seperti bagian dari admin.

Oleh karena itulah login digunakan sebagai pengaman dari data-data atau masing-masing akun, jika sebuah website tidak memiliki proses login maka semua orang akan dapat mengakses halaman admin dan dapat dengan bebas untuk update, delete atau bebas mengacak-ngacak isi dari website dan contoh lainnya coba bayangkan bagaimana jadinya kalau akun facebook kita dapat diakses oleh semua orang tanpa harus login. Oleh sebab itu login sangat penting pada website maupun semua aplikasi untuk menjaga keamanan dari akses luar.

Untuk mengamankan proses login kita akan menambahkan enkripsi md5 pada password untuk lebih memberikan keamanan yang lebih, jadi misalnya ada yang mengambil data dari database dan table yang menyimpan data username dan password, maka dengan enkripsi md5 agak lebih sedikit aman karena akan sulit untuk mengetahui password yang sudah dienkripsi dengan md5.

Sekarang kita akan membuat form login standar dulu tanpa menggunakan enkripsi md5, maksud standar yang dimaksud ialah tidak menggunakan enkripsi md5, agar lebih mudah dipahami. Setelah memahaminya barulah kita bahas cara membuat form login dengan php dan enkripsi md5.

Berikut tahapan-tahapan untuk membuat Form Login dengan PHP dan MySQL :

  1. Untuk memulainya kita siapkan database dengan nama belajarlogin dan sebuah table dengan nama tbl_user yang berisi iduser, namauser, username dan password.Dengan skema table seperti berikut : Selanjutnya kita coba isi data pada table tbl_user tersebut dengan data yang kita perlukan untuk contoh. Sampai pada tahap ini berarti database dan table admin sudah siap untuk digunakan membuat form login dengan php.
  2. Buat folder baru untuk project baru ini di localhost, misal dengan nama folder login.
  3. Buat file php untuk koneksi ke database, misal kita beri nama koneksi.php, dengan sintak seperti berikut :
    <?php 
        $server     = "localhost";  //sesuaikan dengan nama server 
        $pengguna   = "root";       //sesuaikan username 
        $katakunci  = "";           //sesuaikan password 
        $namadb     = "login";      //sesuaikan nama database 
        
        $datakoneksi = mysqli_connect($server, $pengguna, $katakunci, $namadb); 
        if (mysqli_connect_errno()) 
        { 
            echo "Gagal terhubung MySQL: " . mysqli_connect_error(); 
        } 
    ?>
  4. Selanjutnya buat sebuah file php untuk form loginnya, file php tersebut diberi nama index.php, karena form login ini akan dijadikan yang pertama tampil saat di akses, dengan sintak seperti berikut :
    <!DOCTYPE html>
    <html>
        <head>
            <title>Membuat Login Dengan PHP dan MySQL</title>
        </head>
    
        <body>
    
            <!-- awal sintak untuk pesan login -->
            <?php
                if(isset($_GET['pesan']))
                {
                    if($_GET['pesan']=='gagal')
                    {
                        echo "Gagal Login, username atau password salah";
                    }
                    else
                    if($_GET['pesan']=='logout')
                    {
                        echo "Anda sudah logout";
                    }
                    if($_GET['pesan']=='belum_login')
                    {
                        echo "Anda harus login dahulu untuk mengakses halaman admin";
                    }
                }
            ?>
            <!-- akhir sintak untuk pesan login -->
    
    
            <h1 align="center">Membuat Login Dengan PHP dan MySQL</h1>
            <h2 align="center">Halaman Login Sederhana</h2>
    
            <form action="login.php" method="post">
                <table align="center">
                    <tr>
                        <td>Username</td>
                        <td><input type="text" name="pengguna"></td>
                    </tr>
                    <tr>
                        <td>Password</td>
                        <td><input type="password" name="katakunci"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" name="tombollogin" value="Log In"></td>
                    </tr>
                </table>
            </form>
        </body>
    </html>

    Untuk tampilan form login ini kita buat yang sederhana dulu, karena tutorial ini kita fokuskan untuk pembelajaran tentang cara membuat form login dengan php dan mysql saja, sehingga hasilnya akan jadi seperti berikut :  Perhatikan pada form login yang sudah kita buat, kita menentukan aksi dari form tersebut ke file login.php, sehingga secara otomatis halaman akan dialihkan ke halaman login.php pada saat tombol login diklik atau form disubmit. Pada sintak form login (index.php) terdapat juga sintak :

    <!-- awal sintak untuk pesan login -->
    <?php
        if(isset($_GET['pesan']))
        {
            if($_GET['pesan']=='gagal')
            {
                echo "Gagal Login, username atau password salah";
            }
            else
            if($_GET['pesan']=='logout')
            {
                echo "Anda sudah logout";
            }
            if($_GET['pesan']=='belum_login')
            {
                echo "Anda harus login dahulu untuk mengakses halaman admin";
            }
        }
    ?>
    <!-- akhir sintak untuk pesan login -->

    Sintak tersebut untuk menangkap pesan dari file login.php.

  5. Selanjutnya kita buat file login.php di dalam folder project login, dengan sintak seperti berikut :
    <?php
        include 'koneksi.php';
    
        //menangkap data dari form login
        $username = $_POST['pengguna'];
        $password = $_POST['katakunci'];
    
        //query untuk database
        $ambildata = mysqli_query($datakoneksi,"SELECT * FROM tbl_user WHERE username='$username' and password='$password'");
    
        //cek jumlah data yang ada ada dalam table jika username dan password sama dengan form login
        $cek = mysqli_num_rows($ambildata);
    
        if($cek>0)
        {
            $_SESSION['username']   =$username;
            $_SESSION['status']     ='login';
            header("location:admin.php");
        }
        else
        {
            header("location:index.php?pesan=gagal");
        }
    ?>

    Jadi pada file login.php ini kita membuat aksi dari form, mulai dari menangkap data username dan password yang diketikkan pada form sebelum disubmit, kemudian mencocokkan username dan password yang di ketik dengan username dan password yang ada pada database. jika username dan password yang diketik pada form login sesuai dengan yang ada di database berarti login sukses tetapi jika username dan password yang diinput pada form login tidak sesuai dengan yang ada di database berarti login gagal karena username dan password yang di masukkan salah.Perhatikan login.php di atas, pertama kita hubungkan dulu dengan koneksi.php dengan menggunakan fungsi include atau require, pada tutorial ini menggunakan include, kemudian menangkap data username dan password yang diinput pada form login lalu memasukkannya ke dalam variabel.

    $username = $_POST['pengguna'];
    $password = $_POST['katakunci'];

    Kemudian lagi kita menggunakan fungsi mysqli_query() untuk menjalankan sintak atau perintah mysql pada php, jadi mysqli_query() adalah sebuah fungsi php yang berguna untuk menjalankan perintah query mysql, perintah mysql dapat kita letakkan pada parameter fungsi mysqli_query().

    //query untuk database
    $ambildata = mysqli_query($datakoneksi,"SELECT * FROM tbl_user WHERE username='$username' and password='$password'");
    

    Di sini kita menjalankan perintah mysql untuk memilih atau mengambil data username dan password dari tbl_siswa dan membandingkannya dengan username dan password yang diinput dari form login. Kemudian hasil query mysql ini kita hitung jumlah record yang ditemukan dengan fungsi mysqli_num_rows(). Fungsi mysqli_num_rows() adalah fungsi php yang berguna untuk menghitung jumlah record yang ditemukan dari query mysql. Jadi apabila username dan password yang diinput ada pada database maka nilai variabel $cek di atas akan berisi 1 dan jika tidak ada maka nilai pada variabel $cek adalah 0. Dengan 1 dan 0 inilah yang akan kita jadikan pendeteksi apakah username dan password yang diinput pada form login benar atau salah. Jika benar berarti nilainya adalah 1 dan jika salah nilainya adalah 0.

    //cek jumlah data yang ada ada dalam table jika username dan password sama dengan form login
    $cek = mysqli_num_rows($ambildata);
    
    if($cek>0)
    {
        $_SESSION['username']   = $username;
        $_SESSION['status']     = 'login';
        header("location:admin.php");
    }
    else
    {
        header("location:index.php?pesan=gagal");
    }

    Pada sintak selanjutnya, jika username dan passwordnya benar maka variable $cek akan bernilai 1, maka form akan dialihkan ke halaman admin.php, sekaligus mengirimkan nilai username dengan nilai sesuai dengan username yang diiputkan dari form login ($_SESSION[‘username’] = $username;) dan mengirimkan status dengan nilai login ($_SESSION[‘status’] = ‘login’;). Tetapi jika salah maka variable menampilkan isi nilai dari variable $cek akan bernilai 0, maka form akan dialihkan ke halaman index.php kembali dengan mengirimkan pesan gagal (header(“location:index.php?pesan=gagal”);).

  6. Selanjutnya kita buat halaman admin.php, dengan sintak seperti berikut :
    <?php
        //mulai session
        session_start();
        
        //cek status sudah login
        if($_SESSION['status']!="login")
        {
            header("location:index.php?pesan=belum_login");
        }
    ?>
    
    <!DOCTYPE html>
    <html>
        <head>
            <title>Membuat Login Dengan PHP dan MySQL</title>
        </head>
    
        <body>
            <a href="logout.php">LOGOUT</a>
            <h1 align="center">Selamat Datang di Halaman Admin</h1>
            
        </body>
    </html>

    Perhatikan sintak di atas, jika ada yang mengakses halaman http://localhost/login/admin.php tanpa login terlebih dahulu, maka statusnya bukan login, maka akan kembali dialihkan ke halaman index.php dengan membawa pesan belum_login.

    <?php
        //mulai session
        session_start();
        
        //cek status sudah login
        if($_SESSION['status']!="login")
        {
            header("location:index.php?pesan=belum_login");
        }
    ?>
  7. Selanjutnya kita buat file logout.php yang berfungsi untuk keluar dari halaman admin.php, dengan sintak seperti berikut :
    <?php
        //mulai session
        session_start();
    
        //hapus session
        session_destroy();
    
        //alihkan ke halaman login
        header("location:index.php?pesan=logout");
    ?>

    Perhatikan sintak di atas, terdapat fungsi session_start() yang berfungsi untuk memulai sessi, dan fungsi session_destroy() yang berfungsi untuk menghapus semua sessi, selanjutnya halaman akan dialihkan ke halaman index.php dengan membawa pesan logout.

  8. Selanjutnya kita uji coba form tersebut dengan memasukan data yang benar sesuai dengan data yang ada dalam table tbl_user, yaitu usernamenya admin dan passwordnya admin (username dan password silahkan sesuaikan dengan username dan asswrod yang terdapat dalam database masing-masing). Berikut hasilnya jika username dan passwordnya benar : Dan berikut hasilnya jika gagal login, maka akan tampil pesan yang menunjukan login gagal :

Untuk mengubah password login menggunakan MD5 kita ubah dahulu field yang tersimpan dalam tbl_user, pada field password seperti berikut :

Maka field password yang asalnya berisi admin, dengan enkripsi MD5 maka akan terlibat menjadi seperti berikut :

 

Kemudian pada file login.php, ubah sintak pada $password = $_POST[‘katakunci’]; menjadi $password = md5($_POST[‘katakunci’]); . Sehingga lengkapnya menjadi seperti berikut :

<?php
    //mulai session
    session_start();

    //sambungkan ke file koneksi
    include 'koneksi.php';

    //menangkap data dari form login
    $username = $_POST['pengguna'];
    $password = md5($_POST['katakunci']);

    //query untuk database
    $ambildata = mysqli_query($datakoneksi,"SELECT * FROM tbl_user WHERE username='$username' and password='$password'");

    //cek jumlah data yang ada ada dalam table jika username dan password sama dengan form login
    $cek = mysqli_num_rows($ambildata);

    if($cek>0)
    {
        $_SESSION['username']   =$username;
        $_SESSION['status']="login";
        header("location:admin.php");
    }
    else
    {
        header("location:index.php?pesan=gagal");
    }
?>

 

Demikian tutorial login dengan PHP dan MySQL, semoga bermanfaat. Jika ada pertanyaan silahkan tuliskan di kolom komentar.

Related Post

1 Comment

Leave a Reply

Your email address will not be published.


*


error: Ga bisa dicopy