Anda di halaman 1dari 11

MENGGUNAKAN SESSION DAN COOKIE

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().

Pemrograman Web dan Perangkat Bergerak 1


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo variabel sesi yang telah diset di halaman sebelumnya
echo "Username: " . $_SESSION["username"]. ".<br>";
echo "Nama: " . $_SESSION["nama"]. ".";
?>
. . .

Untuk mengubah variabel sesi, cukup dengan mengisi ulang (overwrite)


variabel ini:

$_SESSION["nama"] = "Kartika Sari";

Untuk menghapus semua variabel sesi global dan menghancurkan sesi,


digunakan fungsi session_unset () dan session_destroy ():

<?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:

setcookie(name, value, expire, path, domain, secure, httponly);

Hanya parameter name yang dibutuhkan. Parameters lainnya bersifat


opsional.
Berikut contoh menciptakan cookie bernama “user” dengan nilai “Susi
Susanti”. Cookie akan kadaluarsa (expire) setelah 30 hari (86400 * 30). “/” berarti
bahwa cookie sudah tersedia dalam seluruh website (bisa juga diinginkan direktori
yang sesuai).
Kemudian kita mengambil nilai cookie “user” menggunakan variael global
$_COOKIE. Kita juga menggunakan fungsi isset() untuk mengetahui apakah cookie
diset.

Pemrograman Web dan Perangkat Bergerak 2


<?php
$cookie_name = "namauser";
$cookie_value = "Kartika Fatmawati";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
// 86400 = 1 hari
?>

<?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>

2. Buatlah file dengan nama sesi2.php dengan kode berikut.


<?php
session_start();
?>
<!DOCTYPE html>
<html>

Pemrograman Web dan Perangkat Bergerak 3


<body>
<?php
// Echo variabel sesi yang telah diset di halaman sebelumnya
echo "Username: " . $_SESSION["username"]. ".<br>";
echo "Nama: " . $_SESSION["nama"]. ".";
?>
</body>
</html>

3. Buatlah file dengan nama sesi3.php dengan kode berikut.


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Mengubah variabel sesi
$_SESSION["nama"] = "Kartika Sari";
echo "Variabel sesi telah diubah.";
?>
</body>
</html>

4. Buatlah file dengan nama sesi4.php dengan kode berikut.


<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// menghapus semua variabel sesi
session_unset();

// menghancurkan sesi
session_destroy();
?>
Sesi telah dihapus
</body>
</html>

5. Dengan browser, jalankan file sesi1.php. Kemudian jalankan file sesi2.php.


Perhatikan hasilnya di browser.
6. Tutup browser, kemudian buka lagi browser dan jalankan file sesi2.php.
Perhatikan hasilnya di browser.

7. Dengan browser, jalankan file sesi1.php, kemudian sesi3.php. Kemudian


jalankan file sesi2.php. Perhatikan hasilnya di browser.

8. Dengan browser, jalankan file sesi4.php. Kemudian jalankan file sesi2.php.


Perhatikan hasilnya di browser.

Pemrograman Web dan Perangkat Bergerak 4


9. Pertemuan ini menggunakan database akademik dari pertemuan sebelumnya.
Buat tabel bernama user dengan struktur seperti berikut.

mysql> desc user;


+ + + + + + +
| Field | Type | Null | Key | Default | Extra |
+ + + + + + +
| username | char(9) | NO | PRI | NULL | |
| password | varchar(60) | YES | | NULL | |
| nama | varchar(30) | YES | | NULL | |
+ + + + + + +

10. Isilah tabel user dengan 4 baris data dengan perintah SQL berikut.

insert into user values('susi',md5('susi'),'Susi Susanti');


insert into user values('agus',md5('agus'),'Agus Subagyo');
insert into user values('afi',md5('afi'),'Aliyah Afifah');
insert into user values('eko',md5('eko'),('Eko Haryanto'));

Hasil setelah ditambahkan:

mysql> select * from user;


+ + + +
| username | password | nama |
+ + + +
| susi | 536931d80decb18c33db9612bdd004d4 | Susi Susanti |
| agus | fdf169558242ee051cca1479770ebac3 | Agus Subagyo |
| afi | fc2f6178abeec3a91654adc3f22419fd | Aliyah Afifah |
| eko | e5ea9b6d71086dfef3a15f726abcc5bf | Eko Haryanto |
+ + + +

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');

// mencari data berdasar username


// jika ada, hasil array dengan indeks berupa nama field
// jika tidak ada hasil berupa nilai null
function cariUserDariUsername($username){
$koneksi = koneksiAkademik();
$sql = "select * from user where username='$username'";
$hasil = mysqli_query($koneksi, $sql);
if(mysqli_num_rows($hasil)>0){

Pemrograman Web dan Perangkat Bergerak 5


$baris=mysqli_fetch_assoc($hasil);
$data['username']=$baris['username'];
$data['password'] = $baris['password'];
$data['nama'] = $baris['nama'];
mysqli_close($koneksi);
return $data;
}else{
mysqli_close($koneksi);
return null;
}
}

// memeriksa otentikasi user berdasar username dan password


// jika user dinyatakan otentik, hasil fungsi = true
// sebaliknya hasil fungsi = false
function otentik($username, $password){
$dataUser = array();
$pwdmd5 = md5($password);
$dataUser = cariUserDariUsername($username);
if($dataUser != null){
if($pwdmd5==$dataUser['password']){
return true;
}else{return false;}
}else{
return false;
}
}
?>

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>&nbsp;</td><td><input type="submit" value="OK"></td></tr>
</form>

Pemrograman Web dan Perangkat Bergerak 6


</table>

</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.

Pemrograman Web dan Perangkat Bergerak 7


15. Modifikasilah file prosesloginUser.php, menjadi seperti berikut (tambahan kode
dicetak tebal).

<?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");
}
?>

16. Modifikasilah file hapusmhs.php, menjadi seperti berikut (tambahan kode


dicetak tebal).

<?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).

Pemrograman Web dan Perangkat Bergerak 8


18. Buatlah file dengan nama logout.php dengan kode seperti berikut.

<?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.

Pemrograman Web dan Perangkat Bergerak 9


Menggunakan Cookie
22. Buatlah file bernama cookie1.php, dengan kode seperti berikut.

<?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>

23. Jalankan file cookie1.php. Perhatikan hasilnya. Kemudian lakukan refresh


halaman, perhatikan hasilnya.

24. Buatlah file bernama cookie2.php, dengan kode seperti berikut.

<?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.

Pemrograman Web dan Perangkat Bergerak 10


26. Buatlah file bernama cookie3.php, dengan kode seperti berikut.

<?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>

27. Jalankan file cookie3.php. Perhatikan hasilnya.

28. Jalankan file cookie1.php lagi (sebaiknya browser ditutup dulu). Perhatikan
hasilnya.

D. LATIHAN

• Berisi pengayaan dari praktik.


• Latihan diberikan oleh guru pada saat praktikum.
• Latihan dialokasi 50% dari waktu pertemuan.

E. TUGAS :

• Tugas diberikan oleh dosen pengampu pada akhir praktikum.


• Dikerjakan di rumah dan dilampirkan pada laporan.

===

Pemrograman Web dan Perangkat Bergerak 11

Anda mungkin juga menyukai