A. TUJUAN :
• Siswa dapat menciptakan dan menghapus session, dan mengelola
variabel session
• Siswa dapat menciptakan dan menghapus cookie, dan mengelola
variabel cookie
• Siswa dapat menggunakan fitur session dan cookie dalam aplikasi
B. TEORI SINGKAT
Session
Pada saat Anda bekerja dengan aplikasi, anda membukanya, mengubah
sesuatu, dan kemudian menutup aplikasi. Hal seperti ini dapat disebut dengan sesi.
Komputer tahu siapa Anda. Komputer tahu ketika Anda memulai aplikasi
dan ketika Anda mengakhiri. Tapi di internet ada satu masalah: server web tidak
tahu siapa Anda atau apa yang Anda lakukan, karena alamat HTTP tidak memelihara
status.
Variabel sesi memecahkan masalah ini dengan menyimpan informasi
pengguna yang akan digunakan di beberapa halaman (misalnya username, nama,
dll). Secara default, variabel sesi berlangsung sampai pengguna menutup browser.
Variabel sesi menyimpan informasi tentang seorang pengguna, dan tersedia untuk
semua halaman dalam satu aplikasi.
Sesi dimulai dengan fungsi session_start(). Variabel sesi diatur
dengan variabel global PHP: $ _SESSION. Perhatikan contoh berikut.
<?php
// memulai sesi
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set variabel sesi
$_SESSION["username"] = "ika";
$_SESSION["nama"] = "Kartika Fatmawati";
echo "Variabel sesi telah diciptakan.";
?>
. . .
Kemudian di halaman lain, Anda bisa mengakses variabel sesi yang telah
diciptakan di halaman sebelumnya. Yang perlu kita kerjakan adalah selalu memulai
halaman dengan memanggil fungsi session_start().
<?php
// menghapus semua variabel sesi
session_unset();
// menghancurkan sesi
session_destroy();
?>
Cookie
Cookie sering digunakan untuk mengidentifikasi user. Cookie adalah file kecil
yang mana server menempelkannya di komputer user (klien). Setiap saat komputer
yang sama melakukan request halaman web, server juga akan mengirimkan cookie.
Dengan PHP, Anda dapat menciptakan dan mengambil nilai cookie.
Cookie diciptakan dengan fungsi setcookie(). Sintaks:
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Nama Cookie '" . $cookie_name . "' tidak ada!";
} else {
echo "Cookie '" . $cookie_name . "' sudah ada!<br>";
echo "Nilanya adalah: " . $_COOKIE[$cookie_name];
}
?>
Untuk mengubah nilai cookie, cukup dengan mengeset lagi nilai cookie
dengan fungsi setcookie().
<?php
$cookie_name = "namauser";
$cookie_value = "Susi Susanti";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
C. PRAKTIK
1. Buatlah file dengan nama sesi1.php dengan kode berikut.
<?php
// memulai sesi
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set variabel sesi
$_SESSION["username"] = "ika";
$_SESSION["nama"] = "Kartika Fatmawati";
echo "Variabel sesi telah diciptakan.";
?>
</body>
</html>
// menghancurkan sesi
session_destroy();
?>
Sesi telah dihapus
</body>
</html>
10. Isilah tabel user dengan 4 baris data dengan perintah SQL berikut.
11. Buat file dengan nama cruduser.php dengan kode seperti berikut. Dalam
hal ini Anda membutuhkan file koneksiakad.php dari pertemuan sebelumnya.
<?php
include('koneksiakad.php');
12. Buat file dengan nama login.php dengan kode seperti berikut.
<!DOCTYPE html>
<html>
<head>
<title>Form Login</title>
</head>
<body>
<h1>Login</h1>
<?php
if(array_key_exists('error', $_GET)){
echo "<p style='color: red'>Salah username atau password</p>";
}
?>
<table>
<form method="post" action="prosesloginUser.php">
<tr>
<td>Username:</td><td><input type="text" name="username"
size="30"></td>
</tr>
<tr>
<td>Password</td><td><input type="password" name="password"
size="30"/></td>
</tr>
<tr><td> </td><td><input type="submit" value="OK"></td></tr>
</form>
</body>
</html>
13. Buat file dengan nama prosesloginUser.php dengan kode seperti berikut.
<?php
include('cruduser.php');
$username = $_POST['username'];
$password = $_POST['password'];
if(otentik($username, $password)){
// file hapusmhs.php sudah dibuat di pertemuan sebelumnya
header("Location: hapusmhs.php");
}else{
header("Location: login.php?error");
}
?>
14. Jalankan file login.php, isilah data login yang tidak benar. Perhatikan hasil di
jendela browser. Kemudian jalankan lagi, isilah data login yang benar.
Perhatikan hasil di jendela browser.
<?php
session_start();
include('cruduser.php');
$username = $_POST['username'];
$password = $_POST['password'];
if(otentik($username, $password)){
// Set variabel sesi
$_SESSION['username'] = $username;
$dataUser = array(); // deklarasi var array
$dataUser = cariUserDariUserName($username); // mencari user
(nama)
$_SESSION['namauser'] = $dataUser['nama'];
header("Location: hapusmhs.php");
}else{
header("Location: login.php?error");
}
?>
<?php
session_start();
?>
<!DOCTYPE html>
. . .
<body>
<?php
echo 'user: '.$_SESSION['namauser'];
?>
<h2>Daftar Mahasiswa</h2>
. . .
17. Jalankan file login.php, isilah data login yang benar (misalnya eko).
<?php
session_start();
// menghapus semua variabel sesi
session_unset();
// menghancurkan sesi
session_destroy();
header("Location: login.php");
?>
19. Tambahkan link untuk logout dalam file hapusmhs.php, dengan kode berikut
(diletakkan di bagian akhir).
<br>
<a href="logout.php">Logout</a>
</body>
20. Jalankan aplikasi Anda, dimulai dari login, sampai logout. Perhatikan hasil di
jendela browser.
21. Dengan asumsi Anda belum login, jalankan file daftarmhs.php. Apa yang terjadi?
Seharusnya user tidak boleh masuk ke daftarmhs.php sebelum melakukan login.
Modifikasilah file daftarmhs.php, sedemikian sehingga bila user membuka
daftramhs.php, user akan dialihkan ke jendela login jika ia belum login.
<?php
$cookie_name = "namauser";
$cookie_value = "Kartika Fatmawati";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
// 86400 = 1 hari
?>
<!DOCTYPE html>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name]))
{
echo "Nama Cookie '" . $cookie_name . "' tidak ada!";
} else {
echo "Cookie '" . $cookie_name . "' sudah
ada!<br>";echo "Nilanya adalah: " .
$_COOKIE[$cookie_name];
}
?>
</body>
</html>
<?php
$cookie_name = "namauser";
$cookie_value = "Susi Susanti";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<!DOCTYPE html>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name]))
{
echo "Nama Cookie '" . $cookie_name . "' tidak ada!";
} else {
echo "Cookie '" . $cookie_name . "' sudah
ada!<br>";echo "Nilanya adalah: " .
$_COOKIE[$cookie_name];
}
?>
</body>
</html>
25. Jalankan file cookie2.php (sebaiknya browser ditutup dulu). Perhatikan hasilnya.
<?php
// set expiration date ke satu jam yang lalu
setcookie("namauser", "", time() - 3600);
?>
<!DOCTYPE html>
<html>
<body>
<?php
echo "Cookie 'namauser' telah dihapus.";
?>
</body>
</html>
28. Jalankan file cookie1.php lagi (sebaiknya browser ditutup dulu). Perhatikan
hasilnya.
D. LATIHAN
E. TUGAS :
===