Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)
SEO Complete Guide for Wordpress

Ingin beriklan di atas?


Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[Info Lengkap...]


Ide Membuat Sistem Login Aplikasi Multi User


April 8th, 2009 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Instant Internet Business Ideas
Ingin beriklan di atas?

Bismillah… pada artikel kali ini saya akan mencoba memaparkan bagaimana teknik atau ide dalam membuat sistem login untuk aplikasi multi user.

Dalam suatu aplikasi bisa jadi terdapat lebih dari satu user dan dengan level yang berbeda-beda. Dengan adanya pembagian level tersebut diharapkan adanya hak akses yang berbeda. Untuk memudahkan Anda dalam membayangkan hal ini, misalkan terdapat 5 user katakanlah A, B, C, D dan E dimana user A, B dan C adalah level ‘administrator’, sedangkan D dan E user biasa. Nah… user A, B, dan C ini misalkan berhak mengakses halaman 1, 2 dan 3 dari aplikasi sedangkan D dan E hanya boleh mengakses halaman 3 saja. Dengan kata lain hak akses ke halaman-halaman tersebut ditentukan oleh level usernya.

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

CREATE TABLE user (
  username varchar(20),
  password varchar(20),
  level varchar(20),
  PRIMARY KEY(username)
);
INSERT INTO `user` VALUES ('a', 'pass1', 'admin');
INSERT INTO `user` VALUES ('b', 'pass2', 'admin');
INSERT INTO `user` VALUES ('c', 'pass3', 'user');
INSERT INTO `user` VALUES ('d', 'pass4', 'user');
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

<form method="post" action="loginsubmit.php">
  <table border="0">
    <tr>
      <td>Masukkan Username </td>
      <td><input name="username" type="text"></td>
    </tr>
    <tr>
      <td>Masukkan Password </td>
      <td><input name="pass" type="password"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Submit"></td>
    </tr>
  </table>
</form>

Form login sudah dibuat, berikutnya kita buat script untuk memproses loginnya.

loginsubmit.php

<?php
 
// memulai session
session_start();
 
mysql_connect('dbhost', 'dbuser', 'dbpass');
mysql_select_db('dbname');
 
$username = $_POST['username'];
$password = $_POST['pass'];
 
// query untuk mendapatkan record dari username
$query = "SELECT * FROM user WHERE username = '$username'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
 
// cek kesesuaian password
if ($password == $data['password'])
{
    echo "<h1>Login Sukses</h1>";
 
    // menyimpan username dan level ke dalam session
    $_SESSION['level'] = $data['level'];
    $_SESSION['username'] = $data['username'];
 
    // tampilkan menu
    include "menu.php";
 
}
else echo "<h1>Login gagal</h1>";
 
?>

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

<?php
 
session_start();
 
if ($_SESSION['level'] == "admin")
{
    // tampilkan menu untuk admin
    echo "<a href='hal1.php'>Halaman 1</a> ";
    echo "<a href='hal2.php'>Halaman 2</a> ";
    echo "<a href='hal3.php'>Halaman 3</a> ";
    echo "<a href='logout.php'>Logout</a> ";   
}
else if ($_SESSION['level'] == "user")
{
    // tampilkan menu untuk user biasa
    echo "<a href='hal3.php'>Halaman 3</a>";
    echo "<a href='logout.php'>Logout</a> "; 
}
 
?>

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 :-) Untuk halaman 1, dari kasus yang kita ambil hanya bisa diakses oleh user berlevel ‘admin’ saja. Begitu pula untuk halaman 2. Namun untuk halaman 3, baik level ‘admin’ maupun ‘user’ biasa boleh mengaksesnya.

hal1.php

<?php
 
session_start();
 
// cek apakah user yang mengakses halaman ini sudah melalui login atau belum
// logikanya jika user telah login dan sukses, maka SESSION level dan SESSION username ini pasti sudah ada
// jika ada user yang mencoba akses halaman ini tanpa login, maka logikanya kedua SESSION belum ada
 
if (isset($_SESSION['level']) && isset($_SESSION['username']))
{
   // tampilkan menu. 
   // menu hanya ditampilkan bila halaman ini diakses oleh user yang telah login
 
   include "menu.php";
 
   // cek level user apakah admin atau bukan
 
   if ($_SESSION['level'] == "admin")
   {
       // tampilkan konten halaman 1 jika levelnya admin
 
       echo "<h1>Halaman 1</h1>";
       echo "<p>Selamat datang di halaman satu wahai user : ".$_SESSION['username']."</p>";
       echo "<p>Ini adalah konten halaman 1</p>";
   }
   else
   {
       // jika levelnya bukan admin, tampilkan pesan
       echo "<h1>Maaf.. Anda bukan user berlevel Administrator</h1>";
   }
}
else
{
   echo "<h1>Nah.. Anda pasti mencoba akses halaman ini tanpa login ya?</h1>";
}
 
?>

Untuk halaman 2, konsepnya juga sama seperti script halaman 1 di atas, hanya yang berbeda pada kontennya tentu saja :-) Sekarang untuk halaman ke-3 di mana yang bisa mengakses adalah semua level user, scriptnya adalah:

hal3.php

<?php
 
session_start();
 
if (isset($_SESSION['level']) && isset($_SESSION['username']))
{
   include "menu.php";
 
   if (($_SESSION['level'] == "admin") || ($_SESSION['level'] == "user"))
   {
       echo "<h1>Halaman 3</h1>";
       echo "<p>Selamat datang di halaman tiga wahai user : ".$_SESSION['username']."</p>";
       echo "<p>Ini adalah konten halaman 3</p>";
   }
}
else
{
   echo "<h1>Nah.. Anda pasti mencoba akses halaman ini tanpa login ya?</h1>";
}
 
?>

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

<?php
 
session_start();
session_destroy();
echo "<h1>Anda sudah logout</h1>";
echo "<p><a href='formlogin.htm'>Login Kembali</a></p>";
 
?>

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 ]


Beberapa artikel terkait


Share this article on:

Kata kunci: multi level - muti user - PHP - script -


Ada 79 komentar dalam artikel ini.

  1. klo untuk database yang mengunakan ms.access gimana pak??
    makasi buat replynya :)
    btw tmpt tinggal bapak di karanganyar jakarta bukan?

  2. mashardi says:

    ini yang saya cari-cari pak, matur sembah nuwun.

    moga dibuatkan juga mengenai hak akses user tetapi disimpen dalam database, jadi admin tinggal klik checkbox aja tuk aktifin.

  3. rosihanari says:

    to felix: ya sama saja. Yang beda cuman masalah koneksinya ke access. Anda bisa baca2 artikel saya bagaimana cara koneksi ke access dengan odbc, di artikel saya, misalnya: http://blog.rosihanari.net/script-insert-data-dengan-php-dan-ms-access, http://blog.rosihanari.net/cara-koneksi-php-ke-microsoft-ms-access

  4. asep says:

    pak sebelumnya saya ucapkan terima kasih karena artikel ini yang saya cari selama ini,tapi masalahnya pas saya coba praktekan begitu saya coba login knp login gagal trs…??

    terus bagian ini :
    $_SESSION['level'] = $data['level'];
    $_SESSION['username'] = $data['username'];

    maksudnya apa..? saya msh kurang mengerti

    maaf saya masih newbie..

  5. rosihanari says:

    to asep: coba cek besar kecilnya password yang dimasukkan di form login, atau besar kecilnya nama tabel. Bila masih tidak bisa, silakan download scriptnya di http://www.ziddu.com/download/4224438/multiuser.zip.html

  6. Ardi says:

    Dear pa.

    Artikel_a keren aBiz. btw ko source code_a tak bisa aku download ya? Blh tak kalo minta di kirim ke email aku?
    Thank

    best regards
    ardi

  7. asep says:

    mas saya numpang tanya lagi nie, yang masalah login multi user ini. gini mas pas saya udah coba praktekin yang contoh di atas itu emang bisa
    tapi pas saya mau coba pake autenthikasi MD5 itu eror trs ya mohon di beri pencerahan…

    terima kasih sebelumnya..

  8. rosihanari says:

    to asep: coba cek lagi logika kapan login dikatakan sukses atau berhasil. Mungkin ada logika yang kurang benar dalam script anda

  9. rosihanari says:

    to ardi: bisa kok didownload. Mungkin waktu itu koneksi ke file download baru DC

  10. zhariku says:

    Pa…saya mau tanya nih.. kalo membuat script php konversi bilangan rupiah ke huruf gimana ya ???
    (Rp. 1000 = Seribu Rupiah)



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word