Pemberian hak akses pada masing-masing user ini bisa dalam bentuk link menu. Ketika seorang user telah melakukan login, dan loginnya sukses maka akan muncul menu link ke halaman-halaman yang boleh diaksesnya. Sebagai gambaran misalnya pada contoh di atas, setelah user A login dan loginnya berhasil maka akan muncul menu link menuju ke halaman 1, 2 dan 3 karena si A ini levelnya Administrator. Namun untuk si D, karena levelnya user biasa, maka hanya akan muncul menu link menuju halaman 3 saja.
Nah… lantas bagaimana ide dan teknik dalam membuat sistem login terkait dengan hak akses untuk multi user seperti kasus di atas? Inilah yang akan saya beberkan rahasianya dalam artikel ini. Artikel ini merupakan request dari xfreecode (member saya) sekaligus salah satu dari sekian banyak trik dan teknik yang saya paparkan pada peserta kursus online PHP bersama saya.
Ide dan teknik untuk menyelesaikan kasus di atas sebenarnya hanyalah pada penggunaan SESSION. Setelah user berhasil login, maka dibaca level usernya. Untuk memudahkan pengecekan level user ini, maka level user disimpan pada SESSION. Nah.. level user yang tersimpan dalam SESSION inilah yang nantinya akan banyak dicek untuk keperluan pembatasan hak akses user pada halaman-halaman yang sifatnya private.
OK.. OK… sudah paham deh idenya, tapi gini… bagaimana seandainya ada user yang nakal? misalkan user E dengan level user biasa kebetulan tahu link URL menuju ke halaman 1. Lantas si E ini mencoba mem bypass link menuju halaman 1 melalui URL langsung tanpa melewati menu link, padahal halaman 1 ini adalah restricted area bagi user biasa (dalam hal ini si E). Nah lo… gimana hayoo?? ya… seorang programmer harus pinter-pinter ngakali. Trus… Gimana ngakalinya? ya… sebelum bagian script yang menampilkan konten pada halaman 1 terlebih dahulu harus mengecek level usernya sebagai ‘administrator’ atau tidak, melalui pengecekan SESSION nya. Jika ya, maka tampilkan kontennya, dan jika tidak maka munculkan pesan ‘Anda mau mencoba masuk ya?? Kagak boleh atuh ‘
OK.. deh … stop berteori, sekarang let’s do it!
Untuk studi kasusnya, misalkan kita punya data user sebagaimana tersaji dalam tabel berikut ini
1.CREATE TABLE user (2. username varchar(20),3. password varchar(20),4. level varchar(20),5. PRIMARY KEY(username)6.);1.INSERT INTO `user` VALUES ('a', 'pass1', 'admin');2.INSERT INTO `user` VALUES ('b', 'pass2', 'admin');3.INSERT INTO `user` VALUES ('c', 'pass3', 'user');4.INSERT INTO `user` VALUES ('d', 'pass4', 'user');5.INSERT INTO `user` VALUES ('e', 'pass5', 'user');Wah.. passwordnya kok tidak dienkripsi? he 3x… ya itu saya sengaja karena supaya Anda bisa mencoba script yang saya buat ini. Memang sebaiknya passwordnya Anda enkripsi, paling tidak menggunakan md5().
Nah.. selanjutnya kita buat form loginnya.
login.htm
01.<form method="post" action="loginsubmit.php">02. <table border="0">03. <tr>04. <td>Masukkan Username </td>05. <td><input name="username" type="text"></td>06. </tr>07. <tr>08. <td>Masukkan Password </td>09. <td><input name="pass" type="password"></td>10. </tr>11. <tr>12. <td> </td>13. <td><input type="submit" name="Submit" value="Submit"></td>14. </tr>15. </table>16.</form>Form login sudah dibuat, berikutnya kita buat script untuk memproses loginnya.
loginsubmit.php
01.<?php02. 03.// memulai session04.session_start();05. 06.mysql_connect('dbhost', 'dbuser', 'dbpass');07.mysql_select_db('dbname');08. 09.$username = $_POST['username'];10.$password = $_POST['pass'];11. 12.// query untuk mendapatkan record dari username13.$query = "SELECT * FROM user WHERE username = '$username'";14.$hasil = mysql_query($query);15.$data = mysql_fetch_array($hasil);16. 17.// cek kesesuaian password18.if ($password == $data['password'])19.{20. echo "<h1>Login Sukses</h1>";21. 22. // menyimpan username dan level ke dalam session23. $_SESSION['level'] = $data['level'];24. $_SESSION['username'] = $data['username'];25. 26. // tampilkan menu27. include "menu.php";28. 29.}30.else echo "<h1>Login gagal</h1>";31. 32.?>Bila Anda perhatikan pada script di atas, maka terlihat bahwa menunya membaca script menu.php. Di dalam script menu.php sendiri nantinya terdapat pengecekan level usernya yang tadi tersimpan dalam session sewaktu login sukses. Bila level usernya adalah ‘admin’ maka tampilkan menu link menuju halaman 1, 2, dan 3. Begitu pula untuk level ‘user’.
menu.php
01.<?php02. 03.session_start();04. 05.if ($_SESSION['level'] == "admin")06.{07. // tampilkan menu untuk admin08. echo "<a href='hal1.php'>Halaman 1</a> ";09. echo "<a href='hal2.php'>Halaman 2</a> ";10. echo "<a href='hal3.php'>Halaman 3</a> ";11. echo "<a href='logout.php'>Logout</a> ";12.}13.else if ($_SESSION['level'] == "user")14.{15. // tampilkan menu untuk user biasa16. echo "<a href='hal3.php'>Halaman 3</a>";17. echo "<a href='logout.php'>Logout</a> ";18.}19. 20.?>Selanjutnya, kita bisa mulai membuat konten pada halaman 1, 2 dan 3. Ingat.. sebelum menampilkan kontennya sebaiknya dicek level usernya terlebih dahulu. Bila levelnya tidak sesuai dengan hak aksesnya, maka jangan ragu untuk menolak
hal1.php
01.<?php02. 03.session_start();04. 05.// cek apakah user yang mengakses halaman ini sudah melalui login atau belum06.// logikanya jika user telah login dan sukses, maka SESSION level dan SESSION username ini pasti sudah ada07.// jika ada user yang mencoba akses halaman ini tanpa login, maka logikanya kedua SESSION belum ada08. 09.if (isset($_SESSION['level']) && isset($_SESSION['username']))10.{11. // tampilkan menu.12. // menu hanya ditampilkan bila halaman ini diakses oleh user yang telah login13. 14. include "menu.php";15. 16. // cek level user apakah admin atau bukan17. 18. if ($_SESSION['level'] == "admin")19. {20. // tampilkan konten halaman 1 jika levelnya admin21. 22. echo "<h1>Halaman 1</h1>";23. echo "<p>Selamat datang di halaman satu wahai user : ".$_SESSION['username']."</p>";24. echo "<p>Ini adalah konten halaman 1</p>";25. }26. else27. {28. // jika levelnya bukan admin, tampilkan pesan29. echo "<h1>Maaf.. Anda bukan user berlevel Administrator</h1>";30. }31.}32.else33.{34. echo "<h1>Nah.. Anda pasti mencoba akses halaman ini tanpa login ya?</h1>";35.}36. 37.?>Untuk halaman 2, konsepnya juga sama seperti script halaman 1 di atas, hanya yang berbeda pada kontennya tentu saja
hal3.php
01.<?php02. 03.session_start();04. 05.if (isset($_SESSION['level']) && isset($_SESSION['username']))06.{07. include "menu.php";08. 09. if (($_SESSION['level'] == "admin") || ($_SESSION['level'] == "user"))10. {11. echo "<h1>Halaman 3</h1>";12. echo "<p>Selamat datang di halaman tiga wahai user : ".$_SESSION['username']."</p>";13. echo "<p>Ini adalah konten halaman 3</p>";14. }15.}16.else17.{18. echo "<h1>Nah.. Anda pasti mencoba akses halaman ini tanpa login ya?</h1>";19.}20. 21.?>Eits… hampir lupa, yang terakhir kita buat script logoutnya. Pada prinsipnya proses logout adalah menghapus semua session yang tadi terbentuk ketika login sukses.
logout.php
1.<?php2. 3.session_start();4.session_destroy();5.echo "<h1>Anda sudah logout</h1>";6.echo "<p><a href='formlogin.htm'>Login Kembali</a></p>";7. 8.?>That’s it… mudah bukan membuatnya? Mudah-mudahan artikel di atas menjawab semua unek-unek yang dihadapi bagi Anda yang ingin membuat aplikasi dengan multi user.
[ DOWNLOAD SCRIPT ]