MODUL 1
Pemrograman Aplikasi Web Statefull
A. Kompetensi Dasar
3.1 Menerapkan aplikasi web stateful.
4.1 Membuat aplikasi web stateful.
B. Tujuan Pembelajaran
1. Setelah mencermati materi dan berdiskusi, siswa mampu menjelaskan konsep
stateful dan menerapkannya dalam pemrograman aplikasi web dengan benar
2. Setelah mengamati contoh dan mencermati keterangannya, siswa mampu
merancang dan membuat kode program aplikasi web yang menerapkan stateful
dengan benar
C. Teori
1. Konsep Stateless dan Stateful
Stateless Application adalah suatu model aplikasi yang selalu memberikan
respon sama terhadap setiap client yang mengakses web ataupun aplikasi tertentu.
Pada stateless tidak ada penyimpanan ataupun perubahan setiap kita mengakses
aplikasinya. Jadi stateless itu merupakan model aplikasi yang independen, artinya
bisa berdiri sendiri tanpa ketergantungan ke web ataupun aplikasi lain.
Contoh Stateless Application : Web Statis atau bisa juga web HTML buatan
sendiri. Contoh lain yaitu situs gsmarena.com, situs tersebut merupakan situs
untuk mengetahui dan membandingkan handphone. Situs tersebut merupakan
stateless, kenapa? karena situs gsmarena selalu memberikan respon sama setiap
ada user yang melihat suatu artikel, tidak mungkin memberikan respon berbeda,
karena tidak diharuskan untuk login.
Stateful Application adalah suatu model aplikasi yang menggunakan
penyimpanan (Session, dsb), artinya setiap transaksi yang dilakukan akan diingat,
dan akan berpengaruh kepada transaksi yang akan dilakukan selanjutnya. Cara
kerja stateful aplikasi adalah menyimpan data anda di server, seperti username
dan password, lalu menggunakannya untuk terhubung kepada client. Stateful
application akan memberikan respon sesuai dengan permintaan client sampai
client tersebut logout. Jadi stateful application merupakan aplikasi dependen
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
2
(tidak independen), yaitu respon yang diberikan server tergantung kepada aksi
user /client.
Contoh Stateful Application : Google Drive, Gmail, Mobile Banking. Stateful
yang dimaksud disini adalah ketika kita diharuskan untuk Login agar dapat
mengakses permintaan tertentu.
Session, cookies dan cache adalah 3 hal yang biasa dipakai di web untuk membuat
solusi dimana cara akses suatu konten atau informasi yang disimpan itu muncul
sesuai keinginan, seefisien dan seefektif mungkin:
a. Session
Session menyimpan informasi tentang preferensi yang anda berikan, membuat
suatu sesi yang unik untuk anda. Session, atau sesi, itu seperti appointment ke
dokter. Dokter akan melayani kebutuhan anda sesuai keluhan anda, dan
melayani kebutuhan pasien lain juga. Tapi dokter tidak akan membocorkan
rahasia pasien lainnya kepada anda, baik data diri maupun rekaman medisnya.
Contoh lain dari session adalah saat suatu website yang menampilkan
berita/cerita/konten berdasarkan posisi anda berada, sesuai preferensi yang
anda berikan (misalnya: kegemaran anda adalah makanan dan anda
memasukan data ini ke website tersebut. Disaat anda membuka web itu,
tempat makanan favorit anda yang berada di sekitar anda yang muncul).
Website layanan ini menyimpan informasi IP anda untuk membuat suatu
session khusus untuk anda. Konten ini berbeda dengan apa yang muncul kalau
orang lain yang lihat.
Session diciptakan pada saat tertentu dari kunjungan anda ke website (saat
login), dan dihapus pada saat tertentu juga (saat logout). Session adalah hal
yang membuat interaksi website itu stateful dibanding saat tidak pakai session
(stateless).
b. Cookies
Cookies adalah file teks yang disimpan di browser klien. Mereka digunakan
untuk tujuan pelacakan dan untuk mengidentifikasi pengguna. Pertama, skrip
server mengirimkan seperangkat cookies ke browser. Informasi ini dapat
berupa nama, nomor identifikasi, dll. Kemudian, browser menyimpan
informasi ini di komputer lokal.
Kemudian, ketika browser mengirim permintaan ke server web, ia
mengirimkan informasi cookies ke server. Server menggunakan informasi itu
untuk mengenali pengguna. Karenanya, cookies dapat digunakan untuk
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
3
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
4
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
5
unset($_SESSION['user']);
?>
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
6
K
ita tidak bisa mengosongkan waktu expire, dengan demikian,
kita tidak bisa membuat cookie dengan umur yang tidak
terbatas, solusinya, kita buat waktu expired cookie sangat
lama, misal 5 tahun kedepan
Dari ketujuh argumen tersebut, yang paling sering digunakan adalah
empat pertama. Khusus untuk argumen domain, isinya (jika ada) harus
menggunakan dot (.) sehingga jika kita menuliskan localhost maka akan
gagal.
Contoh: kita set cookie dengan nama background-color dengan nilai
#4e79a0 dan cookie dengan nama font-size dengan nilai 15px
setcookie('background-color', '#4e79a0', time() + (60 * 60), '/');
setcookie('font-size', '15px', time() + (60 * 60), '/');
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
7
Cara ini jauh lebih mudah dibaca dan di-maintenance daripada kita
menggunakan time() + 2595000
Cara lain yang lebih mudah adalah dengan menggunakan format tanggal
relatif (Relative Date Format) yaitu dengan menggunakan kata-kata day,
month, weeks, year, dsb.
Contoh penggunaan relative date format pada cookie:
// Expire 7 hari kedepan
setcookie('background-color', '#75b14a', strtotime('+7
days'), '/');
// Expire 3 bulan kedepan
setcookie('background-color', '#75b14a', strtotime('+3
months'), '/');
// Expire 1 tahun kedepan
setcookie('background-color', '#75b14a', strtotime('+1
year'), '/');
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
8
Jika kita lihat di developer tools, maka kita dapatkan seperti ini:
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
9
(
[PHPSESSID] => vprkeu3jsk7qmkohbhcu0fcto7
[settings] => Array
(
[background-color] => #4e79a0
[font-size] => 15px
)
)*/
Ketika script diatas dijalankan pertama kali, maka kita akan dapatkan hasil
kurang lebih seperti gambar di bawah:
Notice: Undefined index: theme in E:\xampp-
1.8.3.2\htdocs\tutorial\cookie-pada-php\index3.php on line 3
Namun, ketika script diatas dijalankan untuk kedua kali dan seterusnya,
maka variabel $_COOKIE['theme'] akan bernilai jagowebdev
Seperti pada gambar ilustrasi sebelumnya, cookie baru tersedia pada step
ke 3, dimana data cookie dikirim oleh browser, sedangkan fungsi
setcookie() baru berada pada step ke 2.
- Menghapus cookies pada PHP
Untuk menghapus cookie pada PHP, kita cukup memberi nilai kosong
pada nama cookie yang ingin kita hapus datanya.
Misal kita ingin hapus data cookie font-size:
setcookie('font-size', '');
Jika pada waktu membuat cookie kita memberikan argumen lain selain
nama cookie, nilai, dan expire, misal path atau domain, maka untuk
menghapus data cookie tersebut, kita juga harus menyertakan argumen
tersebut.
Misal pada contoh sebelumnya kita membuat cookie dengan memberikan
argumen path '/'.
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
10
c. Pengaturan Cache
Ketika mengakses suatu halaman di website, baik melalui komputer, laptop,
maupun gawai, perangkatmu akan menyimpan informasi yang dikirimkan
oleh server website, inilah yang disebut “cache” atau “tembolok”.
Tujuannya, agar kamu tak perlu menghabiskan lebih banyak waktu menunggu
loading ketika kembali ke website tersebut. Beberapa jenis data yang disimpan
oleh cache adalah video, audio, gambar, dan data flash, tidak seperti cookies
yang menyimpan preferensi pengguna.
Selain cache dikenal pula proxy cache. Proxy server berfungsi untuk caching.
Artinya, data sementara dari aktivitas internet akan disimpan di server. Jadi
ketika Anda ingin mengakses data itu lagi, proxy server akan memberikan data
yang sudah disimpan sebelumnya. Semua data yang pernah Anda akses akan
disimpan oleh server dalam bentuk cache. Karena fungsi caching, semua data
yang pernah Anda akses akan disimpan sementara. Jadi, ketika Anda
melakukan request data yang sama dari server, proxy akan melayani
permintaan tersebut menggunakan data yang tersimpan dalam cache. Dengan
begitu, akses informasi bisa lebih cepat karena tidak semua permintaan harus
ditujukan ke server tujuan sebenarnya.
3. Merancang Program Aplikasi Web Stateful
1. Menggunakan Cookies
Buatlah 3 file dengan nama cookies.php, lihat_cookies.php dan
hapus_cookies.php
cookies.php
<?php
if(isset($_POST['login'])) {
setcookie("nama",$_POST['nama']);
setcookie("email",$_POST['email']);
}
?>
<html>
<head>
<title>Mengeset Nilai Cookie</title>
</head>
<body>
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
11
lihat_cookies.php
<?php
echo "Nilai cookie Nama Anda adalah:".$_COOKIE['nama'];
echo "<br>Nilai cookie email Anda adalah:".$_COOKIE['email'];
echo "<br><a href=\"cookies.php\">Set Cookie</a>";
echo "<br><a href=\"hapus_cookies.php\">Hapus Cookie</a>";
?>
hapus_cookies.php
<?php
setcookie("nama","");
setcookie("email","");
echo "Cookie telah di hapus<br/>";
echo "<br><a href=\"cookies.php\">Set Cookie</a>";
echo "<br><a href=\"lihat_cookies.php\">Lihat Cookie</a>";
?>
2. Menggunakan Session
- Buatlah database dengan nama sesi_nis (contoh: sesi_1111) dan buat
tabel dengan nama pengguna yang berisi field berikut:
nama varchar (255)
email varchar (255)
- Isikan tabel tersebut dengan nama dan email yang anda miliki
Contoh (nama : slamet, email : slamet@gmail.com)
- Buatlah 4 file dengan nama koneksi.php, index.php, login.php dan
logout.php
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
12
koneksi.php
<?php
$konek=mysqli_connect(“localhost”,”user”,”password”,”sesi_
nis”);
if(mysqli_connect_error()){
echo “koneksi gagal”;
}
?>
index.php
<?php
session_start();
require_once “koneksi.php”;
if(!isset($_SESSION[‘nama’]) and
!isset($_SESSION[‘email’])){
header(“location:login.php”);
}
?>
<h2>Selamat Datang</h2>
Nama : <?=$_SESSION[‘nama’];?><br>
Email : <?=$_SESSION[‘email’];?><br>
<a href=”logout.php”>Keluar</a>
login.php
<?php
session_start();
if(isset($_SESSION[‘nama’]) and
isset($_SESSION[‘email’])){
header(“location:index.php”);
}
if(isset($_POST[‘login’])){
require_once “koneksi.php”;
$nama=$_POST[‘nama’];
$email=$_POST[‘email’];
$qr=mysqli_query($konek,“select * from pengguna where
nama=’$nama’ and email=’$email’”);
$cek=mysqli_num_rows($qr);
if($cek>0){
$_SESSION[‘nama’]=$nama;
$_SESSION[‘email’]=$email;
header(“location:index.php”);
}
}
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
13
?>
<h2>Login</h2>
<form method=”post”>
Nama : <input type=”text” name=”nama”><br>
Email : <input type=”text” name=”email”><br>
<input type=”submit” name=”login” value=”login”>
</form>
logout.php
<?php
session_start();
session_destroy();
header(“location:login.php”);
?>
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa
14
4. Proyek
Buatlah aplikasi web dengan menerapkan konsep stateful dengan tema yang telah
ditentukan oleh guru kalian.
E. Penilaian Proyek
Nama Peserta Didik :
Kelas :
Sintang, 20__
Peserta didik Guru Mapel
------------------------------ ------------------------------
Modul Pemrograman Web dan Perangkat Bergerak Kelas XII - SMK Karya Bangsa