Membuat sistem login multi user dengan penggunaan sessions dalam php
Assalamu alaikum wr. wb...?
Mungkin masih ada yang bertanya, Apa itu Sessions...? Pengertian menurut saya mengenai Sessions adalah informasi Website yang tersimpan di Server yang terkait dengan Browser yang kita gunakan, dan sessions ini banyak di gunakan dalam proses Login dan Logout pada Applikasi Website.
Lalu informasi seperti apakah yang tersimpan itu...? 
Tergantung dari si pembuat applikasi tersebut, informasi seperti apakah yang ingin di simpan nya, dan biasanya ini di gunakan untuk menyimpan informasi username,kata sandi dan informasi-informasi lain yang di perlukanya untuk mengakses website tersebut.
Langsung menuju praktek nya...!
Dalam contoh ini saya akan membuat sebuah applikasi website yang memiliki 3 golongan user dengan hak akses yang berbeda untuk login ke website tersebut, dan satu di antaranya memiliki akses sebagai Admin website.Mari kita buat sebuah database nya terlebih dahulu, misalkan bernama login_user
Silahkan gunakan phpMyAdmin untuk membuat nya, dan jangan lupa untuk kolomuser_id gunakan sebagai INDEXS database dengan jenis PRIMARY, dan jenis kolom nya dibuat INT dengan penerapan AUTO_INCREMENT supaya nomor urut nya otomatis pada saat menambahkan user baru.
Untuk membedakan hak akses user...!
Pada kolom user_akses dibuat dengan type ENUM dengan isian nilainya misalkan"gratis","premium","admin" hal ini dimaksudkan untuk membedakan hak akses user tersebut saat login ke website, dan nantinya akan kita simpan pada sessions.
Jika masih bingung dengan pembuatan table database di atas, silahkan copy kan struktur table database di bawah ini, kemudian paste pada database bernamalogin_user yang telah anda buat pada phpMyAdmin.
Untuk phpMyAdmin dengan InnoDB:
--
-- Struktur dari tabel `tab_user`
--
CREATE TABLE IF NOT EXISTS `tab_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`user_nama` varchar(50) NOT NULL,
`user_akses` enum('gratis','premium','admin') NOT NULL DEFAULT 'gratis',
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Untuk phpMyAdmin Dengan MyISAM:
--
-- Table structure for table `tab_user`
--
CREATE TABLE `tab_user` (
`user_id` int(11) NOT NULL auto_increment,
`username` varchar(50) collate latin1_general_ci NOT NULL,
`password` varchar(50) collate latin1_general_ci NOT NULL,
`user_nama` varchar(50) collate latin1_general_ci NOT NULL,
`user_akses` enum('gratis','premium','admin') collate latin1_general_ci NOT NULL default 'gratis',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;
| user_id | username | password | user_nama | user_akses | 
| 1 | andi | 1234 | Andi Doang | gratis | 
| 2 | toto | 1234 | Toto Kuncoro | premium | 
| 3 | calim | 1234 | Calim Weh | admin | 
| 4 | widia | 1234 | Widia Yatin | gratis | 
Jika masih bingung untuk membuat contoh user nya, silahkan masukan 4 data user di bawah ini kepada struktur tabel tab_user yang telah di buat:
--
-- Dumping data untuk tabel `tab_user`
--
INSERT INTO `tab_user` (`user_id`, `username`, `password`, `user_nama`, `user_akses`) VALUES
(1, 'andi', '1234', 'Andi Doang', 'gratis'),
(2, 'toto', '1234', 'Toto Kuncoro', 'premium'),
(3, 'calim', '1234', 'Calim Weh', 'admin'),
(4, 'widia', '1234', 'Widia Yatin', 'gratis');
Sekarang kita saat nya membuat script php untuk table 'tab_user' yang telah di buat pada database tersebut, dimulai dari pertama user login menggunakan form login, dan proses penyimpanan sessions apabila user tersebut memiliki akses dan sudah ada pada database tersebut.
Untuk pembuatan applikasi nya, pertama-tama buatlah sebuah script PHP sebagai koneksi ke MYSQL terlebih dahulu, yang nantinya akan kita include kan ke script php untuk pemrosesan login user, kurang lebih seperti ini :
koneksi.php
<?php$server = "localhost";
$username = "root";
$password = "passwordya";
$database = "login_user";// Koneksi dan memilih database di servermysql_connect($server,$username,$password) or die("Koneksi gagal");
mysql_select_db($database) or die("Database tidak bisa dibuka");?>
Kemudian buat lah sebuah formulir untuk login user nya, misalkan pada form.php
<form name='login' action='proses.php' method='post'><table><tr><td>Username</td><td>:</td><td><input type='text' name='username' value='username' /></td></tr><tr><td>Password</td><td>:</td><td><input type='password' name='password' value='password' /></td></tr></table><input type='submit' name='submit' value="Login!" /></form>
Script form PHP di atas di include kan pada file index.php.
Apabila seorang user akan login dengan mengisi form pada form.php di atas, maka akan di proses oleh script proses.php seperti ini :
proses.php
<?php
include "koneksi.php";
$username = $_POST['username'];
$password = $_POST['password'];
$login = mysql_query("SELECT * FROM tab_user WHERE username='$username' AND password='$password'");
$hasil = mysql_num_rows($login);
$r = mysql_fetch_array($login);
if ($hasil > 0)
{
session_start();
session_register("user_id");
session_register("username");
session_register("password");
session_register("user_akses");
$_SESSION[user_id] = $r[user_id];
$_SESSION[username] = $r[username];
$_SESSION[password] = $r[password];
$_SESSION[user_akses] = $r[user_akses];
header('location:index.php');
}
else{ echo "LOGIN GAGAL! <br> <a href='index.php'><< Kembali</a>"; }
?>
Proses di atas, jika user terdapat pada database, maka akan menyimpan 4 sessions yaitu user_id, username, password, dan user_akses. kemudian mengarah kanya kepada script index.php dan jika user tidak ada pada database, maka akan menghasil kan string LOGIN GAGAL!
Coba anda perhatikan SESSIONS yang di register pada script di atas, bahwa kolomuser_nama tidak di register kan pada sessions, padahal kolom user_nama di buat pada database di atas...! Sengaja saya buat demikian, karena untuk pembuatan applikasi website tentunya memerlukan detail user yang lebih lengkap, seperti alamat user, email user, nomor hp dan sebagai nya, dan jika kita register kan semua pada sessions, maka proses exsekusi script akan menjadi tambah berat untuk loading data nya.
Untuk menghindari kekurangan di atas, maka di gunakan query_mysql untuk memproses pengambilan data-data yang lain pada database, seperti user_nama, dan data-data user lainya apabila ada dan di perlukan untuk applikasi tersebut, lihat pada script index.php.
index.php
<?phpsession_start();
include "koneksi.php";
error_reporting(0);
if (empty($_SESSION['username']) ANDempty($_SESSION['password'])){include "form.php";}
else{?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Login Multi User!</title></head><body><?php$sql = mysql_query("SELECT * FROM tab_user WHERE user_id = '$_SESSION[user_id]'");
while ($data = mysql_fetch_array($sql))
{
$user_nama = $data['user_nama'];
}?><h2>Selamat Datang <?php echo "$user_nama"; ?>!</h2><?phpif ($_SESSION[user_akses] == "gratis") { echo "Kamu login sebagai user Gratis! <a href='logout.php' title='Keluar!'>Keluar</a>"; }
if ($_SESSION[user_akses] == "premium"){echo "Kamu login sebagai user Premium! <a href='logout.php' title='Keluar!'>Keluar</a>";}
if ($_SESSION[user_akses] == "admin"){echo "Kamu login sebagai user Admin! <a href='logout.php' title='Keluar!'>Keluar</a>";}
if ($_SESSION[user_akses] == ""){echo "Kamu tidak memiliki akses kesini!";}?></body></html><?php } ?>
Untuk menghapus SESSIONS yang tersimpan gunakan fungsi perintah session_destroy() Lihat pada script logout.php di bawah ini:
logout.php
Jika anda masih bingung dengan tutorilal di atas, silahkan Download Script Contoh Sistem Login Multi User yang sudah saya buat, dan jangan lupa komentar anda...!<?phpsession_start();
session_destroy();
echo "<script>document.write('Kamu sudah keluar dari halaman member!'); window.location = 'index.php'</script>";?>







 
  
 

 
 
 
 
Tidak ada komentar:
Posting Komentar