SESSION
Untuk menjelaskan tentang
SESSION dan kegunaannya,
saya akan mulai
dengan memberikan contoh visualisasi terlebih dahulu.
Misalkan
kita memiliki sebuah form sebagai berikut
<form
method="post" action="submit.php">
Bilangan
ke-1 <input type="text" name="bil1" /><br />
Bilangan ke-1 <input type="text" name="bil1" /><br
/>
<input
type="submit" name="submit" value="Submit" />
</form>
Form di atas digunakan untuk memasukkan dua buah bilangan. Selanjutnya
kita buat script untuk membaca kedua bilangan yang diinputkan tersebut
submit.php
<?php
$bil1 =
$_POST['bil1'];
$bil2 =
$_POST['bil2'];
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo
"<a href='lanjut.php'>Klik di sini</a>";
?>
Apabila kita telah memasukkan
dua buah bilangan melalui form, kemudian
mensubmitnya maka pada
script submit.php akan
memunculkan kedua bilangan tersebut dengan sukses.
Pada submit.php ini terdapat pula link menuju script lanjut.php. Dalam
script lanjut.php ini, kita juga akan menampilkan kedua bilangan yang
diinputkan sebelumnya.
lanjut.php
<?php
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />"
echo
"<a href='lanjut.php'>Klik di sini</a>";
?>
Nah… apa yang terjadi bila kita mengklik link menuju ke lanjut.php
tersebut? Apakah kedua bilangan yang diinputkan
tadi masih bisa terbaca
nilainya? Jawabannya adalah TIDAK. Kedua
bilangan hanya bisa
terbaca pada script
submit.php saja, karena submit.php adalah halaman pertama
setelah pemrosesan form.
Mungkin Anda
berpikiran bahwa perlu ditambahkan perintah
$bil1 =
$_POST['bil1'];
$bil2 =
$_POST['bil2'];
pada
lanjut.php. Cara ini pun juga tidak bisa untuk membaca kedua bilangan.
Trus.. bagaimana supaya dalam lanjut.php ini kedua bilangan yang
diinputkan masih bisa dibaca nilainya?
Untuk mengatasi hal ini terdapat 2 solusi yang bisa digunakan, yaitu
menggunakan GET
method atau
SESSION.
Apabila kita menggunakan GET method, maka caranya adalah menyisipkan
parameter untuk kedua bilangan
pada link menuju
lanjut.php tersebut. Selanjutnya
dalam lanjut.php, parameter kedua bilangan ini dibaca nilainya.
submit.php
<?php
$bil1 =
$_POST['bil1'];
$bil2 =
$_POST['bil2']
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo
"<a href='lanjut.php?bil1=
".$bil1."&bil2=".$bil2."'>Klik di
sini</a>";
?>
lanjut.php
<?php
$bil1 =
$_GET['bil1'];
$bil2 =
$_GET['bil2'];
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />"
?>
Cara di atas akan dapat memunculkan kedua bilangan pada lanjut.php.
Namun… cara ini terdapat kelemahan yaitu ditampilkannya nilai input sebagai
parameter dalam URL link.
Trus… bagaimana dengan menggunakan SESSION? Ya… dengan menggunakan
SESSION, kita tidak perlu
menuliskan nilai input
dalam URL link.
Nilai input ini
nantinya akan disimpan dalam
suatu variabel SESSION.
Selama browser kita
masih aktif (browse belum
ditutup) atau sengaja
dinonaktifkan (dihapus) SESSION
nya, maka variabe SESSION ini masih terus aktif.
Nilai yang disimpan dalam variabel SESSION ini bisa dibaca atau dikenali
di beberapa halaman script. Beda dengan variabel biasa. Kalau variabel biasa
itu hanya dikenali pada halaman script tersebut saja.
Selanjutnya bagaimana cara menyimpan
nilai ke dalam suatu variabel SESSION? Ya… sebelum mulai menyimpan, kita
harus mengaktifkan SESSION nya terlebih dahulu menggunakan perintah
session_start();
S etelah SESSION aktif, barulah kita
bisa membuat variabel SESSION untuk menyimpan nilai. Berikut ini perintah untuk
menyimpan sebuah nilai ke dalam variabel SESSIO
$_SESSION['namaSession']
= value;
Nilai yang bisa
disimpan dalam SESSION
ini bisa berupa
bilangan, array, karakter maupun string.
Sehingga apabila konsep ini diterapkan pada contoh di atas, maka berikut
ini adalah script submit.php yang telah dimodifikasi
submit.php
<?php
session_start(); // mengaktifkan SESSION
$bil1 =
$_POST['bil1'];
$bil2 =
$_POST['bil2'];
// menyimpan
kedua bilangan ke dalam SESSION
$_SESSION['bil1']
= $bil1;
$_SESSION['bil2']
= $bil2;
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo
"<a href='lanjut.php'>Klik di sini</a>";
?>
Kemudian, bagaimana dengan script lanjut.php nya? Bagaimana cara
menampilkan nilai kedua bilangan yang disimpan dalam SESSION? Ini dia
scriptnya.
lanjut.php
<?php
session_start();
// membaca
nilai dari variabel SESSION
$bil1 =
$_SESSION['bil1'];
$bil2 =
$_SESSION['bil2'];
echo
"Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo
"Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
?>
Keterangan:
Dalam script lanjut.php di atas, kita tetap memberikan perintah
session_start() karena
dalam script
lanjut.php ini kita masih memanfaatkan variabel SESSION.
Menghapus
Variabel SESSION
Kemudian, bagaimana cara
menghapus variabel SESSION?
Cara pertama, Anda akan langsung bisa
menghapus SESSION bila
Anda keluar dari
browser (EXIT), buka meminimize lho! Cara kedua, gunakan
perintah berikut ini pada script.
session_destroy();
Dengan perintah tersebut, maka semua variabel SESSION akan terhapus.
Namun, bagaimana bila hanya ingin menghapus suatu variabel SESSION tertentu
saja? Untuk hal ini, gunakan perintah unset()
unset($_SESSION['nama
session']);
Penerapan
SESSION
Biasanya, SESSION ini
digunakan untuk keperluan
autentifikasi user melalui
login. Adapun idenya adalah apabila user sukses melakukan login, maka username
ini akan disimpan dalam sebuah SESSION.
Mengapa username ini harus
disimpan ke dalam SESSION? Ya… dengan disimpannya username ke
dalam SESSION sekaligus
bisa digunakan untuk
mencegah adanya penyusup yang masuk
ke aplikasi tanpa melalui login.
Lho? Kok bisa, logikanya bagaimana? Ya.. untuk mengecek ada tidaknya
penyusup yang masuk ke aplikasi tanpa login, bisa hanya dengan mengecek SESSION
nya. Jika penyusup tadi masuk ke aplikasi tanpa login, otomatis SESSION nya
belum ada, karena SESSION baru ada ketika user login dengan sukses.
Berikut adalah penerapan session yang digunakan untuk login
Program
//header.php
<head>
<title>Layout</title>
</head>
<body>
<table width=100% border=1
style="border-collapse:collapse">
<tr>
<td
colspan=2><center> <p> <b>TITLE</b> </p>
<br> </center></td>
</tr>
//header1.php
<?php
session_start();
$un = $_SESSION['un'];
?>
<head>
<title>Layout</title>
</head>
<body>
<table width=100% border=1
style="border-collapse:collapse">
<tr>
<td align="right"
colspan=2>
<center> <p>
<b>TITLE</b> </p> <br> </center>
<?php
echo "Username
: ".$un;
?>
</td>
</tr>
//form.php
<?php
session_start();
$un = $_SESSION['un'];
?>
<head>
<title>Layout</title>
</head>
<body>
<table width=100% border=1
style="border-collapse:collapse">
<tr>
<td align="right"
colspan=2>
<center> <p>
<b>TITLE</b> </p> <br> </center>
<?php
echo "Username
: ".$un;
?>
</td>
</tr>
//login.php
<?php
session_start();
$un = $_POST['un'];
$pass = $_POST['pass'];
$_SESSION['un'] = $un;
$_SESSION['pass'] = $pass;
array ( Username , Password,
A , password1,
B , password2,
C , password3,
D , password4,
E , password5 );
switch($un)
{
case $un == ' ' && $pass == ' ' :
echo "<b>Anda belum memasukkan Username dan
Password</b>";
include "form.php";
break;
case $un == 'A' && $pass != 'password1' ;
case $un == 'B' && $pass != 'password2' ;
case $un == 'C' && $pass != 'password3' ;
case $un == 'D' && $pass != 'password4' ;
case $un == 'E' && $pass != 'password5' ;
echo "<b>Password yang anda masukan salah</b>";
include "form.php";
break;
case $un == 'A' && $pass == 'password1' ;
case $un == 'B' && $pass == 'password2' ;
case $un == 'C' && $pass == 'password3' ;
case $un == 'D' && $pass == 'password4' ;
case $un == 'E' && $pass == 'password5' ;
include "loginberhasil.php";
break;
default :
echo "<b> Username tidak terdaftar </b>";
include "form.php";
break;
}
?>
//loginberhasil.php
<?php
include "header1.php";
?>
<tr>
<td>
<center><b>Anda Telah Berhasil
Login</b></center></br>
<center>
<a href=link1.php>Link1</a>|
<a href=link2.php>Link2</a>|
<a href=link3.php>Link3</a>|
</center></br>
<center>
<a href=logout.php> Logout</a>
</center>
</td>
</tr>
<?php
include "footer.php";
?>
//link1.php
<?php
include "header1.php";
?>
<tr>
<td>
<center>
<a href=link1.php>Link1</a>|
<a href=link2.php>Link2</a>|
<a href=link3.php>Link3</a>|
<a href=logout.php> Logout </a>
</center></br>
<center><b>Ini adalah isi dari halaman Link
1</b></center></br>
</td>
</tr>
<?php
include "footer.php";
?>
//link2.php
<?php
include "header1.php";
?>
<tr>
<td>
<center>
<a href=link1.php>Link1</a>|
<a href=link2.php>Link2</a>|
<a href=link3.php>Link3</a>|
<a href=logout.php> Logout </a>
</center></br>
<center><b>Ini adalah isi dari halaman Link
2</b></center></br>
</td>
</tr>
<?php
include "footer.php";
?>
//link3.php
<?php
include "header1.php";
?>
<tr>
<td>
<center>
<a href=link1.php>Link1</a>|
<a href=link2.php>Link2</a>|
<a href=link3.php>Link3</a>|
<a href=logout.php> Logout </a>
</center></br>
<center><b>Ini adalah isi dari halaman Link
3</b></center></br>
</td>
</tr>
<?php
include "footer.php";
?>
//logout.php
<?php
session_start();
session_destroy();
include "form.php";
?>
//footer.php
<tr>
<td
colspan=2><center><b>FOOTER</b></center></td>
</tr>
</body>
</html>
Hasil
//form.php
//belummemasukan
//passwordsalah
//tidakterdaftar
//loginberhasil.php
//link1.php