Session pada PHP

Seringkali dalam program web, diperlukan data yang bertahan antar halaman web, seperti data login atau data keranjang belanjaan. Untuk data seperti ini, pada PHP dapat menggunakan session atau cookies.

Menggunakan session sangat sederhana. Seperti menggunakan variabel seperti biasa. Untuk menggunakan session pada PHP, setiap halaman yang menggunakan session harus menyertakan fungsi session_start():

session_start();

Setelah memanggil fungsi session_start(), maka variabel $_SESSION dapat dipergunakan seperti variabel array biasa.

<?php
session_start();
$_SESSION['login'] = 'Fandi';
?>

Setelah diisi pada suatu halaman PHP, variabel $_SESSION dapat dibaca lagi pada halaman lain

<?php
session_start();
if (isset($_SESSION['login'])) {
  echo "sudah login";
} else {
  echo "belum login";
}

Menghapus session pada PHP

Untuk menghapus session pada PHP, menggunakan fungsi unset(). Fungsi unset() adalah fungsi untuk menghapus variabel dari memori.

Untuk menghapus seluruh isi variabel session yang ada, dapat menggunakan fungsi session_destroy();

<?php
session_start();
unset($_SESSION['login']);
unset($_SESSION['keranjang_belanja']);
//atau
session_destroy();
?>

Contoh penanganan login pada PHP

Untuk lebih memahami session, berikut saya sertakan contoh penanganan login sederhana yang melibatkan penggunaan session. Terdiri dari 3 file, yaitu: login.php, home.php, logout.php

1. login.php

<?php
session_start();
if (isset($_SESSION['login'])) header('location:home.php');
if (isset($_POST['username'])) {
	foreach ($_POST as $k=>$v) $$k = $v;
	if ($username != 'fandi') $error = "Username tidak dikenal";
	if (!$error && $password != '12345') $error = "Password salah";
	//Gak ada error --> berhasil login
	if (!$error) {
		$_SESSION['login'] = $username;
		header('location:home.php');
	}
}
?>
<html>
<head><title>Halaman login</title></head>
<body>
<form method="post" action="">
Username:<input type="text" name="username" />
Password:<input type="password" name="password" />
<button type="submit">Masuk!</button>
</form>
</body>
</html>

2. home.php

<?php session_start(); ?><!DOCTYPE html>
<html>
<head><title>Home</title></head>
<body>
<?php if (!isset($_SESSION['login'])) { ?>
<h1>Maaf Anda belum login.</h1>
Harap <a href="login.php">login</a> terlebih dahulu
<br /><br />
Anda akan secara otomatis diarahkan ke halaman login dalam 5 detik
<script>
var anu = function() { window.location = "login.php"; };
setTimeout(anu,5000);
</script>
<?php } else { ?>
<h1>Home</h1>
Selamat datang <?= $_SESSION['login'] ?> ke halaman home.<br />
Mohon maaf di sini belum ada apa-apa.<br />
Mungkin Anda bisa langsung <a href="logout.php">logout</a> saja.<br />
Terima Kasih atas kunjungannya.
<?php } ?>
</body>
</html>

3. logout.php

<?php
session_start();
unset($_SESSION['login']);
?>
<html>
<head><title>Logout</title></head>
<body>
<h1>Anda telah berhasil logout</h1>
Anda akan otomatis kembali ke <a href="login.php">halaman login</a> setelah 8 detik.
<script>
var anu = function() {
	window.location = "login.php";
};
setTimeout(anu,8000);
</script>
</body>
</html>

Demikian contoh aplikasi login sangat sederhana. Terdapat beberapa syntax yang belum dijelaskan pada script di atas, antara lain:

  1. header("location:sekian.php");
  2. <script></script>
  3. window.location = 'tujuan.php';
  4. setTimeout(fungsi, durasi);

Tapi saya percaya Anda dapat mengira-ngira fungsi dari baris-baris program tersebut. Dan bila memang belum paham, dapat melakukan googling. Karena Googling adalah suatu ilmu rahasia, jurus tingkat tertinggi dalam belajar pemrograman. Salam koding :)