22 Feb

Hak Akses dengan PHP

Untuk dapat mengikuti tutorial kali ini, silahkan Anda download dulu file sourcefiles yang saya sertakan untuk tutorial ini. Ini karena ada beberapa file yang saya sertakan sebagai alat bantu dalam tutorial kali ini. 

Download “Hak Akses” hak-akses.zip – Downloaded 6163 times – 109 kB


Rencana Aplikasi

  1. Jenis user: Admin, Registered User, Guest (guest adalah user yang tidak terdaftar)
  2. Siapa saja dapat mendaftar / membuat user baru tanpa harus login terlebih dahulu.
  3. Admin yang dapat mengubah hak akses semua user, merubah data user lain, dan menghapus user lain.
  4. Registered User dapat melihat daftar semua user tanpa dapat merubah maupun menghapus user lain.
  5. Registerd User dapat merubah data pribadinya.
  6. Untuk dapat melihat data user (data pribadi maupun data semua user), user harus login terlebih dahulu.

Materi Dasar

Sebelum dilanjutkan ke tutorial, kita pelajari dulu logika dasar untuk hak akses.

Logika untuk hak akses tidaklah rumit, hanya dengan logika if sederhana. Kita asumsikan misalkan ada 3 jenis user seperti dalam tutorial kali ini (admin, member, guest) dalam sebuah aplikasi. Untuk dapat mengakses halaman member, user harus terdaftar dan login terlebih dahulu. Kemudian user yang login ini harus dapat dikenali aplikasi apakah ia berstatus sebagai admin atau bukan. Hal ini dikarenakan fungsionalitas aplikasi tidak sama untuk level user yang berbeda. Misalkan: admin boleh menghapus user lain sedangkan user biasa tidak.

Maka logika dasar dari kasus ini adalah seperti berikut:

Kode diatas berarti bahwa jika user memiliki hak akses sebagai admin, maka link untuk delete akan ditampilkan, sedangkan jika tidak maka link delete tidak akan ditampilkan. Simpel banget kan… ^_^

Dalam tutorial kali ini, hak akses (role) disimpan didalam session untuk kemudian dapat kita panggil lagi pada halaman lainnya untuk dilakukan pengecekan. Untuk melakukan pengecekan apakah user yang login memiliki role sebagai admin atau tidak, kode program nya akan terlihat seperti berikut.

Kemudian kode tersebut kita sisipkan pada bagian yang hanya boleh diakses oleh user yang memiliki role sebagai admin.

Jadi, jika ada beberapa menu ataupun fungsionalitas yang hanya boleh digunakan oleh user dengan hak akses tertentu, cukup gunakan logika dasar ini. Jika kebutuhan aplikasi Anda lebih kompleks dari ini, maka tinggal disesuaikan dan dikembangkan sesuai dengan kebutuhan.

Langkah 1 – Struktur Folder

Buatlah folder dengan nama hak_akses pada C:xampphtdocs. Kemudian buat lagi dua folder dengan nama css dan images didalam folder hak_akses.

struktur folder

Kemudian copy-kan file .css dari file yang sudah didownload kedalam folder css, dan file background.jpg kedalam folder images.

struktur folder

File-file .css ini nantinya akan kita gunakan sebagai alat bantu untuk mempercantik tampilan. Untuk menggunakan file-file .css ini cukup dengan menambahkan baris kode seperti berikut.

Langkah 2 – Database

Buat database dengan nama tutorial_3. Kemudian buat tabel dengan nama users dengan data sebagai berikut.

Fieldname Datatype
id_user int(4), PRIMARY, AUTO INCREMENT
username varchar(20), UNIQUE
password varchar(300)
email varchar(100)
fullname varchar(100)
role enum(‘admin’, ‘member’)

Kemudian buat satu user sebagai administrator dengan menjalankan kode berikut pada SQL query (sesuaikan dengan DBMS yang Anda gunakan) agar kita dapat login.

Langkah 3 – File Konfigurasi

Seperti biasa, sebelum membuat aplikasi lebih jauh, kita buat terlebih dulu file konfigurasi untuk koneksi ke server. Ketikkan kode berikut dan simpan dalam folder hak_akses dengan nama config.php.

Langkah 4 – Register User

Ketikkan kode berikut dan simpan dalam folder hak_akses dengan nama index.php.

Pada baris ke-7 kita lakukan pengecekan apakah user sudah login atau belum dengan kode if (isset($_SESSION['username']) || !empty($_SESSION['username'])). Jika sudah login, maka variabel $logged_in di set menjadi true. Variabel ini kita gunakan untuk pengecekan lagi nantinya.

Pada baris ke-57 kita lakukan pengecekan terhadap nilai dari variabel $logged_in dengan kode if ($logged_in). Jika variabel ini bernilai true (yang berarti user sudah login), maka tampilkan link untuk melihat data user. Sedangkan jika bernilai false (yang berarti user belum login), maka tampilkan link menuju halaman login.

Selanjutnya, buat file baru dan ketikkan kode berikut ini. Setelah selesai simpan dengan nama insert.php.

Setelah selesai, coba buka browser dan ketikkan localhost/hal_akses/register.php. Hasilnya akan terlihat seperti gambar dibawah. Cobalah untuk menambahkan beberapa user baru.

register user

Saat ini, kita masih belum dapat login ke aplikasi (iyalah, login nya belum dibikin :D). Selanjutnya kita buat halaman untuk login.

Langkah 5 – Login

Ketikkan kode berikut dan simpan dengan nama login.php.

Berikutnya kita buat file untuk autentikasi user yang login. Ketikkan kode berikut dan simpan dengan nama auth.php.

Setelah selesai, coba buka browser dan ketikkan localhost/hal_akses/login.php. Hasilnya akan terlihat seperti gambar dibawah.

login page

Berikutnya, kita buat sebuah file untuk melakukan pengecekan apakah user sudah login atau belum. Jika user sudah login, maka user tidak perlu login lagi. Buat dokumen baru dan ketikkan kode berikut. Setelah selesai, simpan dengan nama cek-login.php.

File cek-login.php ini akan kita include pada beberapa file lainnya.

Langkah 6 – Daftar User

Buat dokumen baru dan ketikkan kode berikut. Setelah selesai simpan dengan nama users.php.

Perhatikan baris ke-70 terdapat kode if ($_SESSION['role'] == 'admin'). Pada baris ini kita lakukan pengecekan hak akses apakah user yang login memiliki hak akses sebagai admin atau tidak. Jika user memiliki hak akses sebagai admin, maka tampilkan menu edit dan delete. Jika tidak memiliki hak akses sebagai admin, maka menu edit dan delete tidak boleh ditampilkan.

Cobalah lihat hasilnya pada browser dengan membuka halaman localhost/hak_akses/users.php. Hasilnya akan terlihat seperti gambar berikut.

view users

Selanjutnya kita buat halaman edit data. Buat dokumen baru dan ketikkan kode berikut, kemudian simpan dengan nama edit.php.

Perhatikan pada baris ke-63, kembali kita lakukan pengecekan hak akses apakah user memiliki role sebagai admin atau tidak dengan kode if ($_SESSION['role'] == 'admin'). Jika user memiliki role sebagai admin, maka user boleh merubah role user lain.

Agar hasil edit-an dapat disimpan, buat dokumen baru dan ketikkan kode berikut. Kemudian simpan dengan nama update.php.

Sampai disini, kita sudah dapat meng-edit data. Untuk melihat hasilnya, coba buka halaman localhost/hak_akses/users.php, kemudian edit-lah salah satu data yang ada.

Untuk dapat menghapus data, buat dokumen baru dan ketikkan kode berikut. Simpan dengan nama delete.php.

Kesimpulan

Hak Akses atau role tidaklah sulit untuk dibuat. Cukup dengan menggunakan logika if sederhana kita dapat membuat hak akses. Jika ada kesulitan ataupun jika ada yang kurang jelas, silahkan tanyakan pada kotak komentar dibawah.

Selamat belajar, dan semoga bermanfaat. ^_^

44 thoughts on “Hak Akses dengan PHP

  1. wah tq om… ini yg ta cari2, dah 2 hari puyeng2 soal hak akses ternyata d sini ad yg d perlukan, saya ucapkan terimakasih tentang sharing nya, sungguh bermanfaat

  2. maaf sebelumnya saya mau bertanya.
    itu kenapa ya tiap saya jalankan script yang ini :

    Success

    Error

    selalu error.jadi messagenya kan jadi gak bisa keluar..
    minta tolong di bantu.
    trimaksih ^^

  3. yang ini

    $message = $_GET['msg'];

    if ($message == ‘success’) {
    ?>
    Success

    Error
    <?php }

    • ow…
      coba cek di file insert.php nya.

      coba di cek baris kode yang ini.

      if ($query) {    // jika berhasil menyimpan    header('location: index.php?msg=success');} else {    // jika gagal menyimpan    header('location: index.php?msg=failed');}

  4. sudah bener..
    tapi tiap di jalankan pasti messagenya gak mau keluar tulisan “berhasil” kalau pas abis insert data

  5. berhasil kok..
    udah bisa tampil juga…

    kan biar cantik tampilannya kalo abis insert ada pesannya..
    hehhe :)

    • hmm… kalo memang kodingnya sudah sesuai dengan tutorial, seharusnya gk ada masalah… message harusnya nampil…

      coba kirim hasil yg mba buat ke wahyu@nurwahyudin.com ya…
      saya mau lihat kesalahannya dimana :)

  6. Gan ane mw tnya nieh ini website bwatan agan sendiri or cms maaf yah klo pertanyaannya gxx nyambung soalnya website agan wahyu verry good :)
    salam kenal

    • pake cms gan…
      ane pake wordpress… sayang kalo buat blog harus bikin sndiri, lebih cepet pake engine yg udah ada..

      Salam kenal jg :)

  7. ohw ok deh thanks atas jwabannya saya akan sering2 berkunjung ke web agan soalnya tutorialnya beda dri pada yang lain pokoknya verry – verry good

  8. sama-sama gan…
    Thanks jg udah nyempetin berkunjung kemari..
    Moga bermanfaat buat agan, n juga buat yg laennya..

  9. assalammualikum mas saya mw tnya lgi boleh gx??
    saya mw tanya upload gambar sama penomoran otomatis(bukan pda database) formatnya tahun dan no urut (20120001)
    ket :
    klo upload gagal terus mas tpi klo penomoran otomatis blum bsa saya..klo bleh nnti filenya saya kirim :p

  10. trimakasih mas tutorialnya..
    saya agak bingung ketika loginnya mas, loginnya pakai id-yang mana biar keliatan link edit dan delete nya mas..
    mohon pencerahannya..
    trimakasih.

  11. kmaren sudah saya download aplikasi hak aksesnya mas, trus saya jalankan lewat localhost kemudian saya coba login user=admin pass=admin..
    tapi link edit sama deletenya gak keliatan mas…
    ditutorialnya klo hak aksesnya admin maka akan tampil link edit sama deletnya….
    mohon penjelasannya mas.
    trimakasih.

    • sudah buat databasenya blm mas..?
      coba dibuat database & tabelnya, trus insert 1 data sesuai di tutorial…

      kalo sudah sesuai, tidak akan ada masalah (sudah sy cek ulang).

  12. kok ada tulisan ini
    Notice: Undefined index: msg in C:xampphtdocsHak Accessindex.php on line 35

    line 35 isix

    Success

    Error

    fast respon kak , thanks

  13. mas..bagus banget tutorialnya,,,saya sedang menyelesaikan tugas akhir saya, dan tutorial2 sebelumnya sangat membantu :)
    mohon ijin bertanya,,,
    jadi pada saat user melakukan registrasi, ia akan mendaftarkan username, password, dan bilangan string acak untuk otentikasi terhadap website nantinya..
    jadi ketika user akan mendownload sesuatu dari web tersebut maka web akan meminta username dan passwordnya terlebih dahulu..ketika berhasil login, maka web akan menampilkan dokumen yang bisa di download dan bilangan string yang telah di daftarkan sebelumnya untuk memastikan user bahwa data tersebut otentik (user mencocokkan bilangan yang muncul dengan bilangan miliknya ketika registrasi)..bagaimana caranya ketika user memasukan username password, web bisa menampilkan bilangan string acak tersebut sesuai dengan miliknya..terima kasih..

    • buat dulu function untuk random string nya…

      kemudian simpan string untuk tersebut ke database sesuai dengan user yang mendaftar..

      pas user mau download filenya, tinggal select string tersebut dari database sesuai dengan id_user atau sesuai dengan username si user nya…

      done ;)

  14. pertama saya ingin mengucapkan terima kasih untuk mas Wahyu atas tutorial2 nya yang keren dan mudah dipahami ;)

    begini mas, saya sedang membangun sistem untuk lembaga pembelajaran komputer yang memerlukan hak akses. secara umum jenis user yang dapat mengakses sistem tersebut dibagi 3, yaitu admin, pengajar, dan siswa.
    hanya saja saya ingin membaginya lagi, misalkan saja pada siswa yang mengambil kursus php, hanya dapat mengakses file2 yang disediakan pada bagian/halaman php sendiri. begitu juga dengan siswa java, dsb.

    pertanyaannya apakah saya harus membuat jenis user (role) sebanyak itu? mungkinkah kita membuat sub-hak akses pada php? bagaimana caranya?

    Terimakasih :)

    • Dilihat dari studi kasusnya, role cukup 3 saja. Selebihnya, untuk identifikasi kelas dimana siswa tersebut mengambil kursus bisa menambah 1 field baru pada database, misal: kelas.

      Tabel user dapat dibuat seperti berikut:
      - id_user
      - username
      - password
      - role [admin, pengajar, siswa]
      - kelas [php, java]

      Untuk dapat menampilkan siswa yang mengambil kelas php saja, maka sql querynya seperti berikut:

      SELECT * FROM users WHERE role='siswa' AND kelas='php'

  15. bagaimana logikanya kalau form loginnya udah di sertai pilihan user,admin,atau umum pada combo box loginnya

    • Tinggal buat saja pilihan user-nya dengan combobox, kemudian gunakan value dari combobox itu dalam sql syntax nya..

      Tapi saya rasa ini tidak perlu dan tidak penting, karena user cukup login dengan username & password saja. Pengecekan user termasuk dalam level apa ini menjadi tugas sistem (aplikasi).

  16. pertama saya ingin mengucapkan terima kasih untuk mas Wahyu atas kesempatannya
    Saya mau tanya nie mas, saya pake programnya appserver apa itu sama aja kaya pake xampp atau tidak yah mas..?? and setelah saya coba buat kok yang keluar malah ” Connect ke database tidak berhasil ” itu kenapa yah mas..???

  17. permisi….
    saya sudah coba belajar tutorialnya, jelas bgt tiap langkahnya :)
    pas lagi belajar, ketemu problem yang sama dengan ( mba Winda,March 11, 2012 at 7:44 pm . yang comment sebelumnya, saya kira permasalahan saya sama seperti malasalah mba Winda)

    nah, saya mau menanyakan, gimana memecahkan masalah muncul Notice: Undefined index: msg in C:xampphtdocshak_aksesindex.php on line 34 ?

    Notice itu muncul setelah menjalankan localhost/login.php.
    dan setelah mendaftarkan 1 org user.

    minta tolong dibantu juga mas :)
    makasih sebelumnya ..

  18. Selamat malam,,
    Maaf sebelumnya Ada yang mau saya tanyakan nis Mas!
    untuk menampilkan Data 1 users saja yang sudah login itu gimana ya Mas?
    Maksud saya begini, misal ada 4 user di database,tapi saya pengen ketika si user “A” login tapi Data dari si users “B” “C” dan users “D” tidak terlihat oleh si user “A” (yang baru saja login)

    Saya punya masalah begini, Users “C” yang login,tampil dengan Username si users “C” tpi Data nya malah Data si User “A” yang tampil di profile si “C”

    untuk menyelsaikan masalah ini gimana ya Mas?tolong pencerahanya.

  19. Assalamu’alaikum,
    Mas/Saudara Wahyu Yth,

    Saya ingin mencoba membuat sebuah database laporan nilai siswa/mahasiswa, jika usernya login = hanya user bersangkitanlah yang hanya bisa melihat nilanya sendiri, bukan nilai orang lain, kira-kira bisa gak mas memberikan gambaran singkat/sederhana jika ingin membuat database seperti itu.

    mudah-mudahan mas wahyu mengerti maksud saya ya :)

    Teri Kasih, salam hangat.

  20. dari ribuan tutorial dari google, ini yg paling handal
    straight to the point but more stressing for important things
    thanks!

  21. Mas trima kasih atas pencerahannya, Mas Wahyu emang T O P B G T, serius menanggapi setiap pertanyaan dari followers nya, bahkan dosen saya saja minta tolong untuk menyelesaikan masalah saya ttg web hak askes, tidak bgitu menanggapi, terima kasih sekali Mas Wahyu , emang the best tutor, GREAT JOB!!! smoga makin jaya, dan kalo boleh ditunggu mas tutorial tutorial terbaru yang lebih mantap lagi tentang script pembuatan web nya yg lebih mendalam lagi, akhirnya tugas Ujian saya berhasil berkat Mas Wahyu,,God Bless You….

Comments are closed.