Thursday, March 23, 2017

Membuat Form Daftar, Masuk, Index, Keluar dengan PHP MySQL

Membuat Form Daftar, Masuk, Index, Keluar dengan PHP MySQL

Dalam membuat website dengan standar kelengkapan minimum, Setidaknya terdapat dokumen-dokumen php sebagai berikut ini:

  1. koneksi.php : dokumen untuk mengatur koneksi dengan localhost
  2. daftar.php : dokumen berisi formulir pendaftaran pengguna
  3. konfirmasi.php : dokumen untuk memproses data pendaftaran pengguna
  4. masuk.php : dokumen berisi formulir bagi pengguna yang ingin masuk ke situs
  5. verifikasi.php : dokomen untuk memproses data pengguna yang ingin masuk ke situs
  6. sesi.php : dokumen untuk mengatur sesi
  7. index.php : dokumen utama, umumnya berisi sistem atau konten-konten sebagai tujuan utama pengguna masuk ke situs
  8. keluar.php : dokumen yang mengatur log keluar pengguna, dengan menghilangkan sesi.
Sebelum kita membahas lebih lanjut, sebaiknya Anda sudah membaca terlebih dulu tulisan saya sebelumnya yang berjudul Membuat Formulir Registrasi Pengguna dengan PHP MYSQL
Langkah paling awal untuk membuat website ini adalah dimulai dengan membuat dokumen koneksi.php yang berfungsi untuk membuat koneksi dengan database. Di dokumen ini terdapat baris perintah koneksi dan memilih database.
<?php
    $namahost     = "localhost";    //nama host yang digunakan
    $namaPengguna = "root";         //username default untuk bisa masuk/login host
    $katasandi    = "";             //katasandi login di host
    $nama_dbase   = "db_situs";     //nama database yang digunakan

    //membuat perintah koneksi
    $koneksi      = mysql_connect($namahost,$namaPengguna,$katasandi);
    
    //memilih nama database
    $database     = mysql_select_db($nama_dbase);

    //cek koneksi
    if(!$koneksi){
        
        //jika koneksi tidak ada
        echo "Koneksi Gagal";
    }

    //cek database
    if(!$database){
        
        //jika database tidak aktif atau tidak ditemukan
        echo "Database tidak ditemukan";
    }
?>

Urutan membuat web sebaiknya sama dengan urutan pengguna masuk ke website, anggap bahwa kodisi saat ini pengguna belum terdaftar di sistem. maka dari itu sediakan formulir pendaftaran, dengan nama daftar.php.
<html>
    <head>
        <title>index-access : Pendaftaran</title>
    </head>
    <body>
        <form action="konfirmasi.php" method="POST">
        <table>
            <tr>
                <td>Nama Lengkap</td>
                <td>:</td>
                <td><input type="text" name="nama_pengguna" placeholder="Tulis Nama Lengkap Anda" maxlength="50"/></td>
            </tr>
            <tr>
                <td>Password</td>
                <td>:</td>
                <td><input type="password" name="kata_sandi" placeholder="Kata Sandi Anda" maxlength="15"/></td>
            <tr/>
            <tr>
                <td>Ulangi Password</td>
                <td>:</td>
                <td><input type="password" name="ulang_katasandi" placeholder="ulangi kata sandi" maxlength="15"/></td>
            <tr/>
        </table>
        <input type="submit" value="Daftar"/><br/>
        </form>
        sudah terdaftar? <a href="masuk.php">masuk</a>
    </body>
</html>

Didalamnya berisi formulir dengan format paling sederhana, yaitu username dan password, formulir ini akan mengirim data untuk diproses ke konfirmasi.php.
<?php
    //include('koneksi.php') berfungsi untuk mengkoneksikan kodingan dengan localhost
    include('koneksi.php');

    //menginisiasi variabel-variabel yang dikirimkan dari form-->input name
    //fix problem : undefined index...
    if( isset($_POST['nama_pengguna'])  &&
        isset($_POST['kata_sandi'])     &&
        isset($_POST['ulang_katasandi'])
      )
    {

        //mengatur setiap value variabel sesuai dengan data yang dikirimkan dari pendaftaran.php
        $namapengguna   = $_POST['nama_pengguna'];
        $katasandi      = $_POST['kata_sandi'];
        $ulangkatasandi = $_POST['ulang_katasandi'];

    }else{

        //otomatis mengalihkan ke halaman pendaftaran jika terjadi undefined index
        header("location:pendaftaran.php");

    }

    if  (
        empty($namapengguna) ||  //jika nama_pengguna kosong
        empty($katasandi)    ||  //jika kata_sandi kosong
        empty($ulangkatasandi)   //jika ulang_katasandi kosong
        )
    {

        //pernyataan yang keluar jika salah satu atau beberapa kemungkinan di atas terjadi
        echo "ada kolom yang belum diisi <a href='daftar.php'>Kembali ke halaman pendaftaran</a>";

    }else{

        //jika user telah memasukkan semua data yang dibutuhkan, koreksi kata sandi
        if($katasandi == $ulangkatasandi){

            //jika kata sandi sama

            //mengambil informasi dari nama tabel "informasi_pengguna" pada kolom "namaPengguna"
            $ambilDataSql     = mysql_query("SELECT * FROM informasi_pengguna WHERE namaPengguna = '$namapengguna'");

            //mengambil informasi dari seluruh kolom namaPengguna
            $cek_namapengguna = mysql_num_rows($ambilDataSql);

            //mengecek ketersediaan identitas
            if($cek_namapengguna == 0){//jika nama pengguna tidak ditemukan/belum terdaftar

                //lakukan penambahan data
                mysql_query("INSERT INTO informasi_pengguna VALUES('$namapengguna','$katasandi')");
                echo "pendaftaran berhasil <a href='masuk.php'>masuk sekarang</a>";

            }else{

                //memberikan informasi bahwa nama pengguna yang telah dimasukkan telah terdaftar sebelumnya
                echo "nama pengguna sudah terdaftar <a href='daftar.php'>Kembali ke halaman pendaftaran</a>";

            }
        }else{

            //jika kata sandi tidak sama
            echo "kata sandi tidak sama <a href='daftar.php'>Kembali ke halaman pendaftaran</a>";

        }
    }
?>

Di sini, data akan diproses, langkah yang pertama dilakukan adalah memastikan data tidak ada yang kosong, username belum terdaftar, dan password cocok. setelah itu, baru memasukkan data ke dalam database.

Sampai pada tahap ini, anggap bahwa pengguna sudah terdaftar dalam database, selanjutnya adalah membuat formulir agar pengguna bisa masuk ke website. Buat dokumen masuk.php.
<html>
    <head>
        <title>Halaman Login</title>
    </head>
    <body>
        <header>Masuk ke Sistem</header>
        <form action="verifikasi.php" method="post">
            <input type="text" name="nama_pengguna" placeholder="Nama"/>
            <input type="password" name="kata_sandi" placeholder="kata sandi"/>
            <input type="submit" value="Submit"/>
        </form>
        belum terdaftar?<a href="daftar.php">daftar sekarang</a>
    </body>
</html>

Formulir yang digunakan untuk masuk ke dalam website hampir sama dengan pendaftaran, Anda hanya akan mengurangi jumlah kolom yang dibutuhkan untuk memperoleh data pengguna, yaitu username dan password tanpa memerlukan mengulangi password.

Hampir sama seperti prosedur pada pendaftaran, pada formulir masuk.php, memerlukan dokumen untuk memproses data yang dikirim. Maka selanjutnya buat dokumen yang berfungsi untuk memproses datanya, yaitu verifikasi.php.
<?php
    //include('koneksi.php) berfungsi untuk mengkoneksikan kodingan dengan localhost
    include('koneksi.php');

    //menginisiasi variabel-variabel yang dikirimkan dari form-->input name
    //fix problem : undefined index...
    if( isset($_POST['nama_pengguna'])  &&
        isset($_POST['kata_sandi'])
      )
    {
        //mendapatkan data dari masuk.php dan memasukkannya ke variabel
        $namapengguna   = $_POST['nama_pengguna'];
        $katasandi      = $_POST['kata_sandi'];

    }else{

        //otomatis mengalihkan ke halaman masuk.php jika terjadi undefined index
        header("location:masuk.php");

    }

    if  (
        empty($namapengguna) || //jika nama_pengguna kosong
        empty($katasandi)       //jika kata_sandi kosong
        )
    {

        //pernyataan yang keluar jika salah satu atau beberapa kemungkinan di atas terjadi
        echo "ada kolom yang belum diisi <a href='masuk.php'>Kembali ke halaman masuk sistem</a>";

    }else{

        //mengambil informasi dari nama tabel "informasi_pengguna" pada kolom "namaPengguna"
        $ambilDataSql     = mysql_query("SELECT * FROM informasi_pengguna WHERE namaPengguna = '$namapengguna'");

        //mengambil informasi dari seluruh kolom namaPengguna
        $cek_namapengguna = mysql_num_rows($ambilDataSql);
        
        //mengecek ketersediaan identitas
        if($cek_namapengguna == 1){//jika nama pengguna sudah terdaftar
            
            //mengecek kecocokan kata sandi
            $ambil_kata_sandi = mysql_fetch_assoc($ambilDataSql);//mengambil data berupa array
            $cek_kata_sandi   = $ambil_kata_sandi["kataSandi"];//mengambil data array pada item "kataSandi"
            
            if($katasandi == $cek_kata_sandi){//jika kata sandi cocok dengan username database
               
                //memulai session
                session_start();

                //membuat variabel sesi "pengguna" dengan value $namapengguna
                $_SESSION['pengguna'] = $namapengguna;

                //pindahkan user ke halaman index.php
                header("location:index.php");
            
            }else{
                
                //jika kata sandi tidak cocok
                echo "kata sandi tidak cocok, ulangi kembali <a href='masuk.php'>Masuk</a>";
            }
        }else{

            //memberitahukan bahwa nama pengguna belum terdaftar
            echo "nama pengguna belum terdaftar, silahkan mendaftar dulu <a href='daftar.php'>Daftar</a>";

        }
    }
?>

Didalam dokumen verifikasi.php terdapat baris perintah untuk mengatur sesi, namun sebatas inisiasi dan menentukan isi/valuenya. Selanjutnya Anda memerlukan dokumen lagi yang berfungsi untuk mengatur penggunaan sesi yaitu sesi.php. hal ini bertujuan supaya tidak terjadi pengulangan perintah berlebihan.
<?php
    include("koneksi.php");

    //memulai sesi
    session_start();

    //menginisiasi variabel sesi dan mengatur value nya
    $pengguna = $_SESSION['pengguna'];

    //jika sesi $pengguna masih kosong
    if($pengguna == null){
        
        //alihkan user ke halaman masuk.php
        header("location:masuk.php");
    }
?>

Didalam dokumen sesi, terdapat perintah untuk memulai/menggunakan sesi, mengatur value, dan pengalihan halaman jika nilai sesi masih kosong.

Setelah mengatur sesi, maka selanjutnya Anda membuat dokumen utama, yaitu index.php, halaman ini saya atur memiliki dua macam tampilan, yaitu tampilan ketika user belum dan sudah masuk ke website, tentunya pada dua kondisi tersebut memiliki perbedaan.
<?php

//koneksi ke database
include('koneksi.php');

//cek sesi pengguna
session_start();

//menginisiasi variabel "pengguna"
$pengguna = null;

//jika sesi $pengguna sudah diatur, maka masukkan value-nya ke variabel $pengguna
if(isset($_SESSION['pengguna'])){
    $pengguna = $_SESSION['pengguna'];
}
?>
<html>
    <head>
<!--        membuat percabangan if else yang disesuaikan dengan value variabel $pengguna-->
        <?php if($pengguna != null){ ?>
        
<!--        judul halaman
            judul "index-access : Halaman Utama" digunakan jika value pengguna tidak null
-->
        <title>index-access : Halaman Utama</title>
        
        <?php }else{?>
<!--        judul "index-access : Halaman Depan" digunakan jika value pengguna null-->
        <title>index-access : Halaman Depan</title>
        <?php }?>
        
    </head>
    <body>
        
<!--    header halaman
        biasanya diisi dengan judul website
-->
        <header>Your Lorem Ipsum</header>
        
<!--    bagian isi halaman
        umumnya diisi dengan konten/deskripsi website
-->
<!--    jika variabel $pengguna value-nya tidak null
        user masuk ke sistem
-->
        <?php if($pengguna != null){ ?>
        <p>Selamat, <?php echo $pengguna; ?> berhasil masuk ke sistem<p>
        <a href="keluar.php">Keluar</a>

<!--    jika variabel $pengguna value-nya null
        user belum bisa masuk ke sisten
-->
        <?php }else{ ?>
        <p>Selamat Datang di Lorem Ipsum, silahkan <a href="daftar.php">daftar</a> atau <a href="masuk.php">masuk</a><p>
        <?php } ?>
        
        <footer>&copy; Lorem Ipsum <?php echo Date("Y")?></footer>
    </body>
</html>

Ketika user belum masuk maka akan mendapatkan identitas halaman sebagai "Halaman Depan" dan pilihan untuk mendaftar ke website atau, jika sudah terdaftar, bisa langsung masuk melalui formulir. Ketika user sudah masuk, dalam hal ini sudah diatur sesinya, maka akan mendapatkan tampilan identitas halaman sebagai "Halaman Utama", status "berhasil masuk ke sistem", dan pilihan untuk log keluar.

Terakhir, setelah pengguna dapat masuk pada halaman utama website, selanjutnya memerlukan dokumen untuk bisa keluar, yaitu dokumen keluar.php.
<?php
    //memulai sesi
    session_start();

    //menghapus sesi
    session_destroy();
?>
<html>
    <head>
        <title>Keluar Sistem</title>
        <p>Anda telah berhasil keluar sistem</p>
        <a href="masuk.php">masuk lagi</a>
    </head>
</html>

0 on: "Membuat Form Daftar, Masuk, Index, Keluar dengan PHP MySQL"