Pada kesempatan kali
ini saya akan mencoba kembali menulis tutorial mengenai PHP, dan
kali ini yang akan kita bahas adalah bagaimana caranya membuat sistem
login multi user dalam penggunaan SESSIONS yang tersimpan.
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.
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
Mari kita buat sebuah database nya terlebih dahulu, misalkan bernama login_user
Setelah database baru
bernama login_user di buat, kemudian buatlah sebuah
table pada database tersebut, misalkan bernama tab_user dan
nama-nama kolom nya adalah user_id, username, password,user_nama,
dan user_akses.
Silahkan gunakan phpMyAdmin untuk membuat nya, dan jangan lupa untuk kolom user_id gunakan sebagai INDEXS database dengan jenis PRIMARY, dan jenis kolom nya dibuat INT dengan penerapanAUTO_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 bernama login_user yang telah anda buat pada phpMyAdmin.
Silahkan gunakan phpMyAdmin untuk membuat nya, dan jangan lupa untuk kolom user_id gunakan sebagai INDEXS database dengan jenis PRIMARY, dan jenis kolom nya dibuat INT dengan penerapanAUTO_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 bernama login_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 ;
-- 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;
-- 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;
Kemudian setelah
selesai membuat struktur database dan kolom-kolom nya, insert kan beberapa
contoh user pada database tersebut, misalkan seperti contoh di bawah ini:
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');
-- 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 MYSQLterlebih 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";
$username = "root";
$password = "passwordya";
$database = "login_user";
// Koneksi dan memilih
database di server
mysql_connect($server,$username,$password) or die("Koneksi
gagal");
mysql_select_db($database) or die("Database tidak bisa dibuka");
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>"; }
?>
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 kolom user_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
<?php
session_start();
include "koneksi.php";
error_reporting(0);
if (empty($_SESSION['username']) AND empty($_SESSION['password'])){include"form.php";}
else{
include "koneksi.php";
error_reporting(0);
if (empty($_SESSION['username']) AND empty($_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'];
}
while ($data = mysql_fetch_array($sql))
{
$user_nama = $data['user_nama'];
}
?>
<h2>Selamat Datang <?php echo "$user_nama"; ?>!</h2>
<?php
if ($_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!";}
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
<?php
session_start();
session_destroy();
echo "<script>document.write('Kamu sudah keluar dari halaman member!'); window.location = 'index.php'</script>";
session_destroy();
echo "<script>document.write('Kamu sudah keluar dari halaman member!'); window.location = 'index.php'</script>";
?>
Sumber : http://simasdap.blogspot.com/2012/09/membuat-sistem-login-multi-user-dengan.html#ixzz2IVsOCsTr
0 komentar:
Posting Komentar