Apa sih gunanya session di PHP? Beberapa pengunjung setia blog saya ini menanyakanhal tersebut ke saya baik lewat email, YM atau sekedar komentar di blog ini. Nah… melaluitulisan inilah, saya akan berusaha untuk menjawabnya.Secara umum, session digunakan untuk menyimpan suatu informasi antar proses request, baik request dalam bentuk POST atau GET. Bingung yah ?? He.. he.. he… OK saya akan ambilcontoh untuk menggambarkan hal ini.Salah satu contoh yang menggambarkan penggunaan session adalah proses login. Dalamhal ini user akan memasukkan usernamenya melalui form login. Setelah login berhasil, user tersebut dihadapkan pada link menu navigasi yang menuju ke beberapa halaman web. Nah…apabila kita ingin username tersebut akan selalu tampil atau tercatat di halaman-halaman webtersebut, maka username tadi haruslah disimpan dalam session.Untuk memudahkan lagi pemahaman, silakan Anda buat script yang menggambarkankeadaan di atas.Pertama-tama kita buat form login terlebih dahulu
login.htm
<form method="post" action="submit.php">Usename <input type=text name="username">Password <input type="password" name="password"><input type="submit" name="submit" value="Submit"></form>
Nah… selanjutnya kita buat script untuk mengolah proses login. Oya, dalam hal iniandaikan password login diabaikan dahulu ya… karena saya akan fokuskan pembahasan kekonsep session, bukan proses loginnya. Dengan arti lain, untuk contoh ini anggap saja prosesloginnya sukses. Login dikatakan sukses bila password yang dimasukkan user yang bersangkutanketika dalam form login sama dengan passwordnya yang tersimpan dalam aplikasi.
submit.php
<?php
$namauser = $_POST['username']; $password = $_POST['password']; if (login sukses) { echo "<p>Selamat datang ".$namauser."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>"; }
?>
Dari script di atas tampak bahwa username akan muncul atau dikenal di halamansubmit.php. Username ini akan ditampilkan di ucapan selamat datang. Mengapa username inidikenal di halaman ini? Ya… karena halaman submit.php ini merupakan halaman tujuanlangsung setelah proses request melalui form login. Selanjutnya perhatikan, bahwa setelah loginsukses terdapat 3 link menuju ke suatu halaman tertentu. Harapan kita, di setiap halaman tersebutusername akan selalu tercatat dan ditampilkan. OK… kita buat script untuk masing-masinghalaman tersebut.
hal1.php
<?php
echo "<h1>Ini halaman pertama</h1>"; echo "<p>Anda login sebagai ".$namauser."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>";
?>
hal2.php
<?php
echo "<h1>Ini halaman kedua</h1>"; echo "<p>Anda login sebagai ".$namauser."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>";
?>
hal3.php
<?php
echo "<h1>Ini halaman ketiga</h1>"; echo "<p>Anda login sebagai ".$namauser."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>";
?>
Nah… Anda perhatikan bahwa dalam ketiga script masing-masing halaman tujuan,username akan ditampilkan dalam statu login. Namun apa yang terjadi bila Anda menuju kehalaman-halaman tersebut? Munculkah username tersebut? Bim… salabim… ternyata usernametidak muncul. Sehingga dari contoh ini dapat kita simpulkan bahwa username ini hanya akandikenal pada proses request pertama (login), setelah itu bila menuju ke halaman-halaman lain
pada link (proses request kedua, ketiga dst…) maka username tersebut tidak dikenali lagi. So…gimana donk, supaya username tersebut masih bisa dikenali? Yup… kita bisa menggunakansession untuk menyimpan username tersebut. Kenapa kok istilahnya ‘bisa’, bukannya ‘harus’ ?Ya… karena penggunaan session ini merupakan salah satu cara saja, cara yang lain Anda bisamenggunakan cookies.OK… jadi kita bisa menggunakan session, lantas caranya bagaimana menyimpanusername ini ke dalam session? Caranya adalah memberikan perintah berikut ini:
$_SESSION['namauser'] = $username;
Perintah di atas disisipkan pada script submit.php. Oya.. jangan lupa sebelum perintahtersebut diberikan, session harus dijalankan terlebih dahulu dengan perintah session_start().Sehingga isi dari script submit.php menjadi seperti ini
submit.php
<?php
session_start(); $namauser = $_POST['username']; $password = $_POST['password']; if (login sukses) { $_SESSION['namauser'] = $namauser; echo "<p>Selamat datang ".$namauser."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>"; }
?>
Secara umum, perintah untuk menyimpan nilai ke dalam session adalah sebagai berikut
$_SESSION['nama session'] =value;
Mmm… untuk nama session tidak boleh ada spasi. Kita tidak hanya bisa menyimpansuatu nilai berbentuk tunggal ke dalam session, namun bisa juga nilai berupa array.Sekarang… bagaimana cara menampilkan nilai yang telah tersimpan dalam session? ya…caranya hanya dengan memanggil sessionnya. Berikut ini contoh untuk menampilkan usernameyang telah disimpan ke dalam session pada kasus di atas.
submit.php
<?php
session_start();
?>
logout.php
<?php
session_start(); unset($_SESSION['namauser']); echo "Anda telah logout";
?>
Apabila script logout ini dijalankan, maka username yang telah tersimpan tadi tidak akan muncullagi di halaman-halaman yang ada.Manfaat session yang lain adalah dapat mencegah user mengakses halaman-halamantertentu yang sifatnya private tanpa melakukan login (by pass). Dalam contoh di atas, Anda akandapat mengakses halaman 1, halaman 2 dan 3 secara langsung tanpa proses login terlebih dahulu. Nah… dengan session, Anda dapat membuat ketiga halaman tersebut tidak bisa diakses oleh user yang masuk tanpa proses login. Idenya adalah dengan mendeteksi session username.Pendeteksian ini dilakukan di ketiga halaman tersebut. Bila terdeteksi nilai session username inimasih kosong, maka dianggap user yang mengakses tersebut tidak melakukan login terlebihdahulu, sehingga akses harus diblok. Berikut ini script untuk mendeteksi session username yangmasih kosong.
cek.php
<?php
session_start(); if (!isset($_SESSION['namauser'])) { echo "Anda belum login"; exit; }
?>
Script di atas nantinya akan disisipkan ke ketiga halaman private menggunakan include().Perintah ini disisipkan sebelum menampilkan konten yang ada pada halaman tersebut. Berikutini contoh menyisipkan script cek.php ke halaman pertama. Untuk halaman yang lain, caranyasama.
hal1.php
<?php
session_start(); include "cek.php"; echo "<h1>Ini halaman pertama</h1>"; echo "<p>Anda login sebagai ".$_SESSION['namauser']."</p>"; echo "<p>Berikut ini menu navigasi Anda</p>"; echo "<p><a href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu 2</a> <ahref='hal3.php'>Menu 3</a></p>";
?>
Begitu terdeteksi user yang mengakses halaman tersebut tanpa login, maka akan muncul‘Anda belum login’, sedangkan konten halaman aslinya tidak akan muncul. Hal ini karena efek dari perintah ‘exit’. Penjelasan ini pernah saya tulis di artikelMembuat Autentifikasi User dengan PHP
[1]
.OK… demikian penjelasan penggunaan session dan manfaatnya. Mudah-mudahan penjelasan panjang lebar ini bisa bermanfaat bagi Anda semuanya.