Apa sih gunanya session di PHP? Beberapa pengunjung setia blog saya
ini menanyakan hal tersebut ke saya baik lewat email, YM atau sekedar
komentar di blog ini. Nah… melalui tulisan 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 ambil contoh untuk menggambarkan hal ini.
Salah satu contoh yang menggambarkan penggunaan session adalah proses
login. Dalam hal 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
web tersebut, maka username tadi haruslah disimpan dalam session.
Untuk memudahkan lagi pemahaman, silakan Anda buat script yang menggambarkan keadaan di atas.
Pertama-tama kita buat form login terlebih dahulu
login.htm
1.<form method="post" action="submit.php">2.Usename <input type=text name="username">3.Password <input type="password" name="password">4.<input type="submit" name="submit" value="Submit">5.</form>submit.php
01.<?php02.$namauser = $_POST['username'];03.$password = $_POST['password'];04. 05.if (login sukses)06.{07.echo "<p>Selamat datang ".$namauser."</p>";08.echo "<p>Berikut ini menu navigasi Anda</p>";09.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";10.}11. 12.?>hal1.php
1.<?php2. 3.echo "<h1>Ini halaman pertama</h1>";4.echo "<p>Anda login sebagai ".$namauser."</p>";5.echo "<p>Berikut ini menu navigasi Anda</p>";6.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";7. 8.?>1.<?php2. 3.echo "<h1>Ini halaman kedua</h1>";4.echo "<p>Anda login sebagai ".$namauser."</p>";5.echo "<p>Berikut ini menu navigasi Anda</p>";6.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";7. 8.?>1.<?php2. 3.echo "<h1>Ini halaman ketiga</h1>";4.echo "<p>Anda login sebagai ".$namauser."</p>";5.echo "<p>Berikut ini menu navigasi Anda</p>";6.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";7. 8.?>OK… jadi kita bisa menggunakan session, lantas caranya bagaimana menyimpan username ini ke dalam session? Caranya adalah memberikan perintah berikut ini:
1.$_SESSION['namauser'] = $username;submit.php
01.<?php02.session_start();03. 04.$namauser = $_POST['username'];05.$password = $_POST['password'];06. 07.if (login sukses)08.{09.$_SESSION['namauser'] = $namauser;10. 11.echo "<p>Selamat datang ".$namauser."</p>";12.echo "<p>Berikut ini menu navigasi Anda</p>";13.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";14.}15. 16.?>1.$_SESSION['nama session'] = value;Sekarang… bagaimana cara menampilkan nilai yang telah tersimpan dalam session? ya… caranya hanya dengan memanggil sessionnya. Berikut ini contoh untuk menampilkan username yang telah disimpan ke dalam session pada kasus di atas.
submit.php
01.<?php02.session_start();03. 04.$namauser = $_POST['username'];05.$password = $_POST['password'];06. 07.if (login sukses)08.{09.$_SESSION['namauser'] = $namauser;10. 11.echo "<p>Selamat datang ".$_SESSION['namauser']."</p>";12.echo "<p>Berikut ini menu navigasi Anda</p>";13.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";14.}15. 16.?>hal1.php
01.<?php02.session_start();03. 04.echo "<h1>Ini halaman pertama</h1>";05.echo "<p>Anda login sebagai ".$_SESSION['namauser']."</p>";06.echo "<p>Berikut ini menu navigasi Anda</p>";07.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";08. 09.?>01.<?php02.session_start();03. 04.echo "<h1>Ini halaman kedua</h1>";05.echo "<p>Anda login sebagai ".$_SESSION['namauser']."</p>";06.echo "<p>Berikut ini menu navigasi Anda</p>";07.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";08. 09.?>01.<?php02.session_start();03. 04.echo "<h1>Ini halaman ketiga</h1>";05.echo "<p>Anda login sebagai ".$_SESSION['namauser']."</p>";06.echo "<p>Berikut ini menu navigasi Anda</p>";07.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";08. 09.?>Setelah menggunakan session, dapat Anda lihat bahwa username ini akan selalu tampak pada setiap halaman yang ada.
Nah… mungkin ada pertanyaan lain. Bagaimana cara menghapus nilai session yang telah tersimpan? Nilai session ini akan terhapus otomatis begitu browser ditutup atau keluar dari browser. Cara lain adalah dengan menggunakan perintah session_destroy() atau unset($_SESSION['nama session']). Bedanya apa antara kedua perintah tersebut? session_destroy() digunakan untuk menghapus semua session. Jadi, misalkan dalam script Anda terdapat 10 nama session, dan misalkan Anda ingin menghapus semua session tersebut maka gunakan session_destroy(). Lalu unset($_SESSION['nama session']) digunakan untuk menghapus session tertentu saja.
Konsep penghapusan nilai session ini, dapat diterapkan pada proses logout. Karena pada prinsipnya proses logout ini adalah menghapus nilai session (dalam hal ini adalah username) yang telah tersimpan. Berikut ini contoh script logout.
logout.php
1.<?php2.session_start();3. 4.unset($_SESSION['namauser']);5.echo "Anda telah logout";6.?>Manfaat session yang lain adalah dapat mencegah user mengakses halaman-halaman tertentu yang sifatnya private tanpa melakukan login (by pass). Dalam contoh di atas, Anda akan dapat 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 ini masih kosong, maka dianggap user yang mengakses tersebut tidak melakukan login terlebih dahulu, sehingga akses harus diblok. Berikut ini script untuk mendeteksi session username yang masih kosong.
cek.php
01.<?php02.session_start();03. 04.if (!isset($_SESSION['namauser']))05.{06.echo "Anda belum login";07.exit;08.}09. 10.?>hal1.php
01.<?php02.session_start();03.include "cek.php";04. 05.echo "<h1>Ini halaman pertama</h1>";06.echo "<p>Anda login sebagai ".$_SESSION['namauser']."</p>";07.echo "<p>Berikut ini menu navigasi Anda</p>";08.echo "<p><a
href='hal1.php'>Menu 1</a> <a href='hal2.php'>Menu
2</a> <a href='hal3.php'>Menu 3</a></p>";09. 10.?>sumber : http://blog.rosihanari.net


