12 Dec

Membuat Sistem Login Dengan PHP

Tutorial ini merupakan lanjutan dari tutorial sebelumnya: Membuat Aplikasi Input Data Sederhana Dengan PHP, sehingga database yang digunakan adalah database dalam tutorial sebelumnya. Jadi, untuk dapat mengikuti tutorial kali ini, anda harus mengikuti tutorial sebelumnya terlebih dahulu.

Download “CRUD dan Login” belajar.zip – Downloaded 34074 times – 6 kB

Berikut saya tampilkan kembali struktur database dari tutorial sebelumnya.

Fieldname Datatype
user_id int(4), PRIMARY, AUTO INCREMENT
username varchar(20)
password varchar(255)
email varchar(100)
fullname varchar(100)
agama varchar(15)
no_hp bigint(14)

 

Langkah 1 – Form Login

Buat form login dengan mengetikkan kode berikut. Kemudian simpan pada folder yang sama dengan tutorial sebelumnya (folder belajar) dengan nama login.php.

Untuk melihat halaman login ini, bukalah http://localhost/belajar/login.php pada browser.

Langkah 2 – Otentikasi Login

Setelah membuat form login, kita harus membuat sebuah file untuk memproses data login yang dimasukkan user apakah valid atau tidak. Ketikkan kode berikut dan simpan dengan nama otentikasi.php.

Kode diatas akan melakukan pengecekan terhadap inputan user yang berupa username dan password apakah username dan password terdaftar atau tidak dalam database. Penjelasan kode program sudah saya sertakan dalam baris-baris komentar pada kode program tersebut.

Sampai disini, sistem login sudah dapat digunakan. Cobalah buka halaman login dengan membuka http://localhost/belajar/login.php pada browser. Kemudian masukkan username dan password yang sudah dibuat pada tutorial sebelumnya. Coba juga untuk memasukkan berbagai kondisi yang berbeda seperti memasukkan username dan password yang salah, mengosongkan field username ataupun password, ataupun mengosongkan keduanya untuk menguji sistem otentikasi yang dibuat.

Sistem login memang sudah berhasil, namun jika hanya sampai tahap ini saja maka fungsi login belum berfungsi maksimal karena user masih dapat masuk kedalam aplikasi tanpa harus login terlebih dahulu. Cobalah buka http://localhost/belajar/. Halaman tersebut masih dapat diakses tanpa harus login terlebih dahulu karena kita belum membuat otentikasi pada setiap halaman apakah user harus login terlebih dahulu atau tidak untuk mendapat akses ke setiap halaman.

Langkah 3 – Otentikasi pada file-file lain

Agar setiap halaman hanya dapat diakses setelah login, kita perlu menambahkan beberapa baris kode pada file otentikasi.php seperti berikut.

Untuk dapat membuat otentikasi pada setiap halaman, kita menggunakan session untuk menyimpan data username dari user yang telah login. session_start() digunakan untuk membuat session baru (jika session belum dibuat) ataupun melanjutkan session (jika session sudah dibuat sebelumnya). Kemudian data username disimpan dalam session ini dengan menggunakan perintah $_session['username'] = $username yang berarti menyimpan data username kedalam session dengan nama session adalah username. Selanjutnya, data session inilah yang akan selalu kita gunakan untuk men-cek apakah user sudah login atau belum.

Untuk melakukan pengencekan, buat dokumen baru dan ketikkan kode berikut. Kemudian simpan dengan nama cek-login.php.

Kemudian kita harus meng-include kan file cek-login.php ini pada file-file yang hanya boleh diakses setelah user login (index.php, edit.php, dan view.php).

Cobalah buka halaman index.php, edit.php, dan view.php pada browser. Jika anda belum login, maka anda akan secara otomatis dialihkan ke halaman login. Setelah login, cobalah untuk membuka halaman login.php. Masih dapat dibuka? Meskipun anda sudah login? Ya, kita belum membuat pengecekan login pada halaman login itu sendiri.

Tambahkan kode berikut pada file login.php.

Sekarang cobalah buka halaman login.php. Jika anda sudah login, maka anda akan dialihkan ke halaman index.php.

Langkah 4 – Logout

Sekarang kita buat file untuk logout. Karena kita menggunakan session untuk menyimpan variabel yang digunakan dalam validasi login, maka untuk logout, kita cukup menghapus session yang digunakan. Ketikkan kode berikut dan simpan dengan nama logout.php.

Kemudian buat link ke file logout.php pada halaman index.php.

Sekarang, sistem login sudah selesai dibuat. Cobalah untuk login dan logout dengan mencoba-coba berbagai kombinasi username  dan password.

Kesimpulan

Dasar pembuatan sistem login adalah dengan menggunakan session untuk menyimpan data login yang kemudian variabel session inilah yang kita gunakan dalam pengecekan apakah user sudah login ataupun belum. Aplikasi ini hanyalah contoh sederhana penggunaan sistem login. Dalam aplikasi yang lebih kompleks, akan lebih banyak lagi pengecekan yang digunakan. Semoga bermanfaat dan jangan lupa isi komentar ya ^_^.

62 thoughts on “Membuat Sistem Login Dengan PHP

  1. sistim login berjalan sukses om, tapi aye masih ga ngerti,,

    buat syntac nya masih blom apal.. tricksnya gimana seh om?

    • hehe… biar lebih ngerti coba pelajari yg namanya session di php… itu kuncinya buat tutorial ini…

      soal syntax, itu mah gk usah dihapalin… :D
      praktekin aja tiap hari… minimal praktek 1 jam/hari

      ntar jg cepet apal… ^_^

  2. Kalo ngikutin tutorial ini, emang sengaja dibuat begitu… tidak dibedakan usernya… jadi semua user bisa melihat data yang diinputkan…

    nah.. kalo pingin biar user yg bisa melihat data user yg login cuma user yg login itu, ada beberapa cara….
    - bisa dengan cara kita buat beberapa hak akses untuk user seperti admin, editor, anggota, dan lainnya

    - bisa juga cuma load data user yg login saja dari database… ini cukup di SQL query-nya saja…
    contoh:
    [crayon-541d32f12079c129402553  brush: php; gutter: true ]$user_id = $_GET['id'];$query = mysql_query("SELECT * FROM user WHERE user_id='$user_id'");$data = mysql_fetch_array($query);echo "Nama: ".$data['nama'];//dan seterusnya...[/crayon]

    kalau dijelaskan di kotak komentar ini cukup panjang. Insya Allah nanti saya buatkan tutorial tentang Hak Akses untuk menjawab pertanyaan Om Aji :)

  3. mas wahyu.. bs tolong aku buat bikin nin program pendataan karyawan yang sederhana ga , berserta foto dan data cuti nya .. Fb mas wahyu apa ??

  4. mas mau nanya, jika login dengan NIK, tapi setelah login ditampilkan NAMA atas user yang login, bagaiamana caranya. mohon bantuannya, tolong di kirim via email juga ya mas…terima kasih

    • Kalo loginnya pake NIK, untuk menampilkan data user yang login cukup dengan menggunakan NIK itu pada query sql nya.

      $nik = $_GET['nik'];$q = mysql_query("select * from user where nik='$nik'");$data = mysql_fetch_array($q);//tampilkan datanyaecho "NIK: ".$data['nik'];echo "Nama: ".$data['nama'];

      Semoga membantu :)

      • maksud saya setelah login dengan input NIK dan password dan klik tombol submit, maka akan tampil tulisan “Selamat Datang Fanny”, apakah sama caranya?

      • sama saja…
        intinya, ambil NIK yang diinputkan user yang login untuk digunakan dalam sql query nya… kemudian data hasil eksekusi query dapat digunakan untuk membuat info sesuai yang diperlukan…

        contoh:

        $nik = $_GET['nik'];$q = mysql_query("select * from user where nik='$nik'");$data = mysql_fetch_array($q);//tampilkan datanyaecho "Selamat Datang: ".$data['nama'];

      • namanya tetep ga tampil mas

        $vnik = $_GET['txtnik']; --> txtnik dari form$sql = mysql_query("SELECT * FROM tblkaryawan WHERE nik='$vnik'");       $data = mysql_fetch_array($sql);#menampilkan nama userecho "Anda Berhasil Masuk".$riceklagi['namakaryawan']; --> namakaryawan dari field database mysql

        tapi ko namanya ga tampil ya mas?

      • coba perhatikan bagian ini:

        Biar bisa nampilin nama karyawan, seharusnya variabel yang dipake adalah variabel yg diisi dara dari mysql_fetch_array(). Dari kode diatas berarti harusnya variabel $data, bukan variabel $riceklagi. Kemudian nama didalam kurung siku [] itu diisi nama kolom dari tabel yang ingin diambil datanya. Misal di tabel tblkaryawan ada kolom nik, namakaryawan, alamat. Maka untuk mengambil nama karyawan, variabel nya jadi $data['namakaryawan']

        Jadi script nya seharusnya:

  5. mas,yang tambahan di file otentikasi ditambahkan di bagian mana ya? saya mengikutinya kog eror terus. Terima kasih sebelumnya

    • masa sih masih gk bisa…??? :-/

      mungkin aja dari form inputannya….
      misal, kalo input name nya “txtnik”, maka buat ngambik data inputan itu harus make name dari inputannya. Trus perhatikan juga method pengiriman dari form nya, pake POST, atau GET. kalo pake POST, maka di php buat nerima datanya juga harus pake POST.

      maka ngambil nya disesuaikan dengan method dan name nya

  6. mas, tetep ga tampil, apanya yang salah yaa….mas ada alamat email? saya kirimin filenya yaa…..gimana? boleh?

  7. ini merupakan warning error yang ada di halaman login.php mas…
    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:xampplitehtdocsBelajarlogin.php:8) in C:xampplitehtdocsBelajarlogin.php on line 9

    Warning: Cannot modify header information – headers already sent by (output started at C:xampplitehtdocsBelajarlogin.php:8) in C:xampplitehtdocsBelajarlogin.php on line 12

    • Cannot send session cache limiter – headers already sent

      Itu berarti erornya ada kesalahan dari penempatan session_start() nya.
      session_start() biasanya ditempatkan pada code di baris paling atas, ini karena session_start() hanya bisa dipanggil sebelum browser menampilkan apapun.

      referensi lanjut: http://php.net/manual/en/function.session-start.php

  8. mas wahyu.., blog ini bermanfaat dan jelas sekali klo menerangkan, aku newbie d PHP tpi berhubung baca blog mas wahyu, ane jadi mulai paham tentang PHP. biar lebih mendalam soal PHP, mas wahyu kasih download ebook format .pdf atau .doc donk..,
    sebelumnya saya berterima kasih udh d’kasih jalan menuju k blog ini.., akhir nya saya trtarik sm PHP. :D

    Sukses terus mas wahyu dan http://www.nurwahyudin.com nya. ^_^

  9. pagi mas wahyu..

    mas saya mau tanya, supaya pada saat sudah login, user tidak bisa klik back bagaimana caranya yaa? dan jika user klik home (menuju halaman utama) kenapa kondisi halaman utama kembali kosong ya, tidak ada nama user yang sudah login. mohon bantuannya ya mas…

  10. ini website sangat berguna, mas saya ada tugas buat ujian praktek kejuruan membuat website ppd. tutorial yang dari pertama sampai yang ini apakah bisa buat database input data pdd?
    trima kasih

    • Alhamdulillah…

      Untuk sekedar input data, ini sudah cukup. Tapi kalo untuk bikin website yang lebih kompleks, ini masih sangat kurang. Insya Allah nanti saya buatkan tutorial untuk materi yang lainnya lagi seperti validasi, security, dan lainnya. Sekarang belum sempat nulis lagi, masih sibuk sama kerjaan soalnya :)

  11. siank mz.. tutornya sngat bermanfaat.. tpi bisa bikin yang pke hak akses antara user, admin, user spesial g ya?? mksh mz sblmnya… mohon bntuannya..

    • Terimakasih mba kartika sudah mengikuti tutorialnya…

      Tutorial berikutnya sedang ditulis tentang hak akses. Tapi masih belum selesai mba…

      Silahkan bekrunjung lagi nanti untuk cek sudah ada tutorial baru atau belum… :)

  12. mas, saya udah nyoba,, tapi setelah login koq gx mau ke index.php nya ya mas? itu kenapa mas?
    tampilannya error ” usernama dan password tidak terdaftar ”
    itu krnapa mas

    • bisa jadi karna belum ada user yang dibuat… jadinya gk bisa login…

      coba bikin user baru dulu pake query sql di sql panel nya… :)

  13. Mas Wahyu, mohon tanya, untuk login dengan session start sudah jalan, tetapi saya ingin menampilkan juga nama orangnya dalam form selamat datang & web link lanjutannya (dalam tabel user (sql) untuk database loginnya terdiri dari: id, nama, username, password) sementara inputan login hanya memakai username (pake angka) dan password (pake angka) saja tanpa input login nama orangnya, bagaimana cara mengambil nama orangnya dalam satu tabel user tersebut ? mohon bantuan dan bila tidak keberatan dapat dibalas di email saya di: tfiqx@yahoo.co.id, terima kasih banyak.

  14. mas ane mw nanya buat Tugas Akhir masalah ane sma kya @Fanny.. gmana yah menampilkan data pribadi setelah melakukan login??
    ini scriptny :

    Login
    Username
    Password
    Identitas
    Nama
    Program Studi
    No Induk
    Kewarganegaraan
    Jenis Kelamin
    Agama
    Tempat, Tanggal Lahir,
    Foto
    Ijazah
    Pekerjaan
    Kontak
    Nama ortu :BapakIbu<?php echo "".$row['bapak']."”;?>
    Alamat
    Propinsi
    Kabupaten
    No Telepon
    No Hp

    ane dah cba tpi gx mw tampil klo menampilkan semua data alhamdulillah sya bsa..!!
    mohon bantuannya maaf klau kpanjangan

  15. Aduh maaf mas kok gx mw tampil sih script php nya
    mas ane bleh minta email mas gx ane krim ke email mas aja yah :)
    soalnya bwat TA mas
    sebelumnya thanks

    • Sory baru reply… saya baru pulang soalnya…

      Sebenarnya caranya sama saja dengan cara menampilkan data pada halaman view, hanya bedanya data yang dipilih adalah data dengan nik/username yang digunakaan oleh user saat login.

      Contoh:
      select * from users where username='$username'

      Dalam SQL syntax tersebut kita gunakan $username. $username ini adalah username user yang login, yang kita tangkap datanya dari form login.

      Untuk lebih jelasnya, silahkan email saya di wahyu1790@gmail.com, atau bisa juga ke wahyu@nurwahyudin.com

  16. ass… ia mas ane dah gunain cra itu tpi ttep gx bsa filenya sma dbnya ane krim ke email mas yah

    ini stuktur dbnya
    username
    pass
    dll.
    ini ane dah pke ini jga gx mw tampil
    $tampil = "select * from tbpendaftaran where username = $_SESSION[username] and pass = $_SESSION[pass]";

  17. Mas, saya ada error seperti ini : Parse error: syntax error, unexpected $end in C:Program Filesxampphtdocstashabelajarlogin.php on line 44

    pada file login.php

    Kalau code PHP nya dihapus, baru bisa munculin formnya, dan tidak eror. Kenapa ya mas? Berikut kodingannya :

    LOGIN

    LOGIN

    <?php
    //kode ini kita gunakan untuk menampilkan pesan error
    if (!empty ($_GET['error'])){
    if($_GET['error'] == 1){
    echo 'Username dan Password belum diisi!’ ;
    } else if ($_GET['error'] == 2 ) {
    echo ‘Username belum diisi ‘ ;
    } else if ($_GET['error'] == 3 ) {
    echo ‘Password belum diisi ‘ ;
    } else if ($_GET['error'] == 4 ) {
    echo ‘Username dan Password tidak terdaftar ‘ ;
    }
    ?>

    Username
    :

    password
    :

    • coba di cek lagi kode nya
      kelihatannya ada tag yang belum ditutup

      setiap open tag, harus ada close tag nya

      contoh benar:
      if () {}

      contoh error (lupa ditutup):
      if () {

  18. MAs, klo erornya gini kenapa ya?
    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:Program Filesxampphtdocstashabelajarlogin.php:1) in C:Program Filesxampphtdocstashabelajarlogin.php on line 18

    dia error disetiap session_start

    • itu karna session nya dipake setelah browser nampilin sesuatu ke layar.

      trik nya, session_start() selalu taruh di baris paling atas, baris ke-1

  19. mas..
    koq login dlo baru index (input user) yah.. ??
    klo index (input user) dlo kira2 bisa apa gak mas ??

    • di tutorial ini emang dibuat login dulu baru bisa akses ke aplikasi.

      bisa, tinggal di edit2 aja :)

  20. mas mw tanya dan minta bantuin.nya……..pas saya masuk ke form login gagal terus alias gk running….
    script codenya:

    1. actlogin.php

    2.sesion.php

    3.connt-db.php

    4.index.php

    SELAMAT DATANG, . Anda login sebagai .

    5.logout.php

    6.menu.php
    // Form Data Master \

    $(document).ready(function(){
    $(“.sub”).mouseenter(function(){
    var id=$(this).attr(“id”);
    $(“#sublist”+id).show(“fast”);
    });
    $(“.sub”).mouseleave(function(){
    var id=$(this).attr(“id”);
    $(“#sublist”+id).hide(“fast”);
    });
    });

    #menu ul {
    list-style:none;
    }
    #menu li {
    float:left;
    position: relative;
    left:-40px;
    }
    .sub {
    background-image: url(‘images/arrow.png’);
    }
    .lisublist {
    top:0;
    z-index:600;
    float:left;
    position: absolute;
    left:150px;
    display:none;
    }
    .sublist {
    z-index:500;
    display:none;
    width:149px;
    }
    #menu li, .link {
    font-family: Tahoma;
    font-size:12px;
    background-color:#7A952B;
    height: 30px;
    width: 149px;
    display: block;
    border: 0.1em solid #dcdce9;
    color: #ffffff;
    text-decoration: none;
    text-align: center;
    }

    Home

    Data Master


    Nomor Polisi


    Nomor Mesin


    Nomor Rangka


    Nomor Polis


    Nomor Kontrak


    search

    Keluar

    • code nya gk semua nampil..
      coba code nya di wrap dalem tag biar bisa nampil semua..

  21. kren nech toritorial…
    kalo boleh saran mas,, bisa nda klo tambahin javascript juga,,
    thanx,,, :)

  22. agak kaget liat yang namanya mas Wahyu…
    asli niat banget ngajar dan sharing ilmu,jarang lho di indonesia…
    makasih mas tutorialnya, semoga ilmunya makin bertambah….

  23. makasih ya mas,bermanfaat kali buat say.
    saya mau minta tolong nie mas.
    saya khan lgi nyusun skripsi n jdul’a tentnag perpustakaan digital. Bisa bantuin saya cari tutorial cara membuat perpustakaan digital yang baik mas….

  24. mas saya kan dah buat login dan sukses tapi saya mau tanya gmn caranya memanggingl username yang baru lagin untuk di tampilkan dihalam selanjutnya…
    jadi logikanya kaya gini
    halaman login :
    username : admin
    pass : admin

    lalu setelah di submit masuk kehalaman index tetapi didalam halaman index terdapat kata selamat datang admin, nah kata admin sendiri diambil dari username yang login tadi… mohon bantuanya ya mas

Comments are closed.