• Tidak ada hasil yang ditemukan

07_Session dan Cookie

N/A
N/A
Protected

Academic year: 2017

Membagikan "07_Session dan Cookie"

Copied!
12
0
0

Teks penuh

(1)

Session dan Cookie

dengan para pengguna. Karena seiring dengan berj alanny a w ak t u suat u saat ak an m uncul suat u perm asalahan dim ana k et ik a int erak si dengan pengguna perlu dit elusuri daripada hany a sek edar m em buat sebuah halam an w eb dengan m enggunak an PHP.

Session dan cook ie sangat erat k ait anny a dalam pr oses m eny im pan infor m asi int erak si dengan pengguna sehingga inform asi y ang diperoleh dari pengguna m elalui int erak si dengan halam an w eb sebelum ny a dapat “ diingat ” . Den gan m enggunak an session dan cook ie, suat u inform asi dalam su at u v ariabel dapat disim pan dan diberik an dari suat u halam an w eb ke halam an w eb lainny a t anpa perlu m enggunak an for m m elalui elem en input y ang t ersem buny i.

Cont oh aplik asi sederhana dari pem anfaat an session dan cook ie adalah proses dan sist em login. Dalam proses sist em login, seorang pengguna y ang t elah login dapat m engak ses halam an- halam an t ert ent u y ang t idak dapat diak ses oleh publik t anpa perlu m engident ifik asi pengguna set iap k ali m engak ses halam an t ersebut .

1 .2 Tu j u a n

(2)

2 . SESSI ON D AN COOKI E

2 .1 Se ssion

Session dalam proses br ow sing h alam an- halam an w eb sangat ber guna unt uk m elacak perilak u dan apa y ang dilak uk an oleh pengguna m elalui int erak si dengan halam an w eb. I nt erak si dengan pengguna dapat dilacak dalam selang w ak t u y ang lebih lam a daripada periode y ang diperluk an unt uk m engk esek usi sebuah script unt uk m enghasilk an sebuah halam an w eb at au unt uk m endow nload sebuah halam an w eb.

Gam bar 7.1 Session y ang disim pan oleh w eb brow ser dalam bent uk cookie ( at as) dan session y ang disim pan dalam bent uk file oleh w eb serv er dalam folder / t m p ( baw ah)

Prot ok ol HTTP bersifat st at eless, yait u t idak bisa m eny im pan suat u inform asi at au k ondisi pada ak t iv it as pengguna sebelum ny a. Oleh k arena it u, j ik a suat u halam an w eb y ang dipresent asik an kepada user bergant ung k epada int eraksi y ang dilak uk an user t ersebut sebelum ny a at au perlu m engident ifik asi siapa pengguna y ang m engak ses suat u halam an w eb, m ak a script PHP y ang digunak an harus m eny im pan dan/ at au m enggunak an inform asi y ang m em bedak an ant ara user y ang sat u dengan y ang lainny a.

(3)

Ket ik a sebuah session diinisialisasi, serv er ak an m eny im pan inform asi dalam v ariabel session y ang dapat diak ses oleh halam an web lain selam a session- ny a t et ap akt if. Seluruh inform asi y ang t erdapat dalam v ariabel session ak an disim pan pada k om put er serv er dalam file session. Di sisi k om put er pengguna, inform asi y ang disim pan hany a k ode acak heksadesim al 32 k arak t er y ang m enj adi ident ifier- ny a saj a.

Gam bar 7.2 I nform asi y ang t erdapat dalam v ariabel session ak an disim pan dalam file session pada k om put er serv er

Secara norm al, session ak an t et ap ak t if hingga j endela brow ser dit ut up. Pengguna lain t idak dapat m elihat session y ang dim ilik i oleh pengguna lain, k arena ident ifier y ang diberik an oleh serv er bersifat unik , hek sadesim al acak sepanj ang 32 k arak t er.

M e m bu a t Se ssion

Unt uk m em buat sebuah session dan m eny im pan inform asi y ang dapat digunak an di seluruh halam an w eb lainny a, cuk up dilak ukan dengan m enggunak an k ode PHP berik ut dibagian at as script PHP se be lu m script PHP m engeluark an out put :

session_start();

Ca t a t a n

Walaupun infor m asi y ang disim pan dalam file session pada w eb serv er dalam for m at file t ek s biasa ( plain- t ex t ) , file t ersebut t idak dapat diak ses secara langsung oleh w eb brow ser y ang digunak an oleh pengguna. Kecuali j ik a t erj adi k esalahan k onfigurasi sehingga file session y ang dibuat oleh w eb server dilet ak k an pada direk t ori y ang t erdapat di dalam docum ent root w eb serv er sehingga file session t ersebut m enj adi accessible m elalui web brow ser.

Secara default , session dapat digunak an t anpa perlu m engubah k onfigurasi t ert ent u. Nam un session sangat bergant ung pada cook ie. Jik a penggunaan cook ie dinon- ak t ifk an pada w eb br ow ser pengguna, m ak a session t idak dapat bekerj a dengan baik . Walaupun session ident ifier dapat diberik an m elalui query st ring, penggunaanny a sangat t idak dianj urk an dengan alasan k eam anan.

Ca t a t a n

(4)

M e m bu a t da n M e n gh a pu s V a r ia b e l Se ssion

Unt uk m em buat sebuah v ariabel session, dengan k at a lain m eny im pan infor m asi dalam session, dapat dilak uk an dengan m enggunak an superglobal array $_SESSION. Sebagai cont oh, k ode PHP berik ut m eny im pan suat u nilai v ariabel k e dalam session:

<?php

session_start();

// simpan nilai dalam variabel session dengan nama index 'nama' $_SESSION['nama'] = 'Panda';

?>

Sedangk an k ode PHP berik ut digunak an unt uk m enam pilk an nilai v ar iabel session y ang sudah disim pan sebelum ny a dari halam an w eb lain:

<?php

session_start();

// tampilkan nilai dalam variabel session dengan nama index 'nama' // baris kode berikut akan menampilkan 'Panda'

echo $_SESSION['nama'];

?>

Unt uk m enghapus nilai v ariabel session, gunak an k ode PHP berik ut :

<?php

session_start();

// tampilkan nilai dalam variabel session dengan nama index 'nama' // baris kode berikut akan menampilkan 'Panda'

unset( $_SESSION['nama'] );

echo $_SESSION['nama']; // undefined

?>

Sedangk an unt uk m enghapus session dan m enghapus seluruh inform asi didalam ny a dapat dilak uk an m enggunak an k ode PHP berik ut :

<?php

session_start(); session_destroy();

?>

(5)

Script PHP sederhana berik ut m em perlihat k an penggunaan session unt uk m engenali j um lah k unj ungan dari pengguna dan m enam pilk an cont ent y ang berbeda k et ik a seorang pengguna pert am a k ali m engunj ungi suat u halam an w eb dengan k unj ungan berik ut ny a pada halam an w eb y ang sam a.

<?php // file visit.php session_start(); ?>

<HTML> <HEAD>

<TITLE>Halo!</TITLE> </HEAD>

<BODY>

<H2>Selamat Datang!</H2> <?php

if (!isset($_SESSION['visit_count'])) {

echo "Halo, Anda pasti baru saja mengunjungi halaman ini."; $_SESSION['visit_count'] = 1;

} else {

$visit_count = $_SESSION['visit_count'] + 1;

echo "Wah, Anda kembali lagi ya? Sudah $visit_count kali lho!"; $_SESSION['visit_count'] = $visit_count;

}

$self_url = $_SERVER['PHP_SELF'];

echo "<BR><A HREF=\"$href\">Datang lagi</A> kapan-kapan! Ditunggu lho."; ?>

</BODY> </HTML>

Ket ik a pert am a k ali pengunj ung m engak ses halam an t ersebut ak an disapa dengan pesan y ang m engat ak an bahw a pengunj ung t ersebut baru pert am a k ali m engunj ungi halam an w eb sepert i y ang diperlihat k an dalam Gam bar 7.3.

Gam bar 7.3 Tam pilan halam an w eb ket ik a pert am a dik unj ungi oleh pengguna.

Pada k unj ungan pengguna y ang berik ut ny a, k ode PHP t elah m engenali bahw a k unj ungan t ersebut buk an kunj ungan y ang pert am a dari v ariabel session, sehingga pesan y ang dit am pilk an berbeda dari pesan pada k unj ungan y ang pert am a, sepert i y ang diperlihat k an dalam Gam bar 7.4.

(6)

dalam session at au belum . Beberapa fungsi built - in PHP y ang t erk ait dengan session diperlihat k an padaTabel 7.1.

Gam bar 7.4 Tam pilan halam an w eb ket ik a dikunj ungi oleh pengguna unt uk k edua k aliny a

Tabel 7.1 Fungsi- fungsi dalam PHP y ang dapat digunak an unt uk m em anipulasi session

Fungsi Desk ripsi

session_start() Menginisialisasi session, j ik a session ident ifier dit em uk an

m elalui cook ie, m et hod GET at au POST, m ak a seluruh v ariabel y ang t elah didaft ark an sebelum ny a ak an berada dalam v ariabel superglobal $_SESSI ON. Jik a session

ident ifier t idak dit em uk an, m ak a PHP ak an m enginisialisasi ident ifier y ang baru.

session_register() Mendaft ark an st ring y ang m enj adi k ey v ariabel session

session_unregister() Menghapus st ring y ang m enj adi k ey v ariabel session

session_is_registered() Mem erik sa apak ah sebuah st ring k ey t elah t erdaft ar dalam

session

session_destroy() Menghapus seluruh v ariabel y ang t erdaft ar dalam session.

Session ident ifier y ang digunak an t et ap sam a.

session_unset() Menghapus seluruh v ariabel y ang t erdaft ar dalam session.

session_name() Menghasilk an nam a session, biasanya 'PHPSESSID'.

session_module_name() Menghasilk an nam a m odul y ang digunak an unt uk

m eny im pan inform asi session, um u m ny a 'files'.

session_save_path() Menghasilk an at au m enent uk an direk t ori dim ana file- file

session disim pan.

session_id() Menghasilk an session ident ifier y ang sedang digunak an

session_regenerate_id() Mem buat session ident ifier y ang bar u.

2 .2 Cook ie

(7)

dapat m em anipulasi cook ie y ang dibuat oleh serv er lain. Nam un inform asi y ang disim pan dalam cook ie dapat dibaca oleh pengguna, baik it u pengguna y ang sedang m engak ses halam an w eb, m aupun pengguna lain y ang sedang m enggunak an kom put er y ang sam a. Sehingga penggunaan cook ie dapat dik at ak an t idak am an dan t idak direk om endasik an unt uk m eny im pan inform asi y ang sifat nya sensit if sepert i passw ord pengguna, nom or rek ening bank , dan inform asi sensit if lainny a.

Beberapa hal y ang harus diperhat ikan dalam m enggunak an cook ie unt uk m erek am int eraksi dengan pengguna adalah sebagai berik ut :

• Sebuah w ebsit e t idak dapat m em buat lebih dari 20 cook ie dalam sat u dom ain y ang argum en pert am a y ang diperluk an , sisany a bersifat opsional. Cook ie dibaca oleh serv er ham pir secara ot om at is, nam a dan nilai v ariabel- v ariabel cook ie dapat diak ses m elalui array superglobal $_COOKIE dengan nam a cook ie sebagai index - ny a.

Berik ut ini adalah cont oh script PHP unt uk m em buat cook ie:

<?php // file setcookie.php

// contoh membuat sebuah cookie dengan nama 'username' bernilai 'kang_admin' // cookie akan kadaluwarsa dalam waktu 1 hari (86400 detik)

(8)

?>

M e m ba ca Cook ie

Set elah cook ie berhasil dibuat , cook ie t ersebut dapat dibaca dengan m enggunak an array superglobal $_COOKIE dengan nam a v ariabel cook ie sebagai array k ey - ny a. Sebagai cont oh, k ode PHP berik ut ak an m enam pilk an pesan y ang berbeda k et ik a sebuah cook ie dit em uk an oleh serv er:

<?php // filename: readcookie.php

// Jika cookie dengan nama 'username' ditemukan, sapa namanya. // Jika tidak, tampilkan pesan sambutan lain secara umum. if ($_COOKIE['username']){

echo "Selamat datang, " . $_COOKIE['username']; }

else {

echo "Apakah ini pertama kalinya Anda mengunjungi situs ini? Jika ya, selamat datang, selamat menikmati sajian istimewa dari kami.";

}

?>

Unt uk m em erik sa apak ah cook ie berhasil dibuat dan m elihat seluruh isi y ang t erdapat dalam cook ie, PHP m eny ediak an fungsi print _r( ) unt uk m enam pilk an seluruh isi v ariabel ar ray . Sehingga k ode PHP berik ut ini dapat digunak an unt uk m enam pilk an seluruh isi dari v ariabel superglobal array $_ COOKI E:

Cook ie dapat dihapus dengan m enggunak an fungsi y ang sam a dengan fungsi y ang digunak an unt uk m em buat cook ie, y ait u fungsi setcookie(). Perbedaanny a t erdapat pada w ak t u k adaluarsa y ang diber ik an sebagai argu m en fungsi t ersebut . Unt uk m enghapus cook ie, gunak an w ak t u k adaluarsa y ang berada di m asa lam pau. Wak t u k adaluarsa di m asa lam pau dapat diberik an dengan nilai y ang lebih k ecil dari nilai y ang diberik an oleh fungsi mktime()

at au time(). Nilai y ang diberik an oleh fungsi time() dan mktime() adalah j um lah det ik y ang t erj adi hingga saat ini sej ak w ak t u Epoch, y ait u sej ak 1 Januari 1970 puk ul 00: 00.

Cont oh k ode PHP y ang dapat digunak an unt uk m enghapus cook ie dengan nam a cook ie

'username' adalah sebagai berik ut :

<?php // filename: deletecookie.php

(9)

?>

Dengan m em berik an nilai w ak t u k adaluarsa di m asa lam pau mktime()-10000, m ak a v ariabel cook ie dengan nam a 'username' ak an m enj adi k adaluarsa dan dihapus dari k om put er client oleh w eb br ow ser.

2 .3 Pa ge Re dir e ct ion

Session dan cook ie bany ak dim anfaat k an unt uk m em fasilit asi proses login, dim ana pengguna y ang t elah diot ent ik asi ( t elah login) dapat m engak ses halam an- halam an t ert ent u y ang sifat ny a t idak t erbuk a oleh um um . At au j ik a pengguna m em ak sa unt uk m engak ses halam an y ang t idak dapat digunak an sebelum diot ent ik asi t erlebih dahulu, m ak a pengguna t ersebut ak an dialihk an k e halam an login unt uk diot ent ik asi.

Page redirect ion secara sederhana dapat dilak uk an dengan fungsi PHP header()berik ut :

<?php

$url_tujuan = "http://google.com"; header("Location: " . $url_tujuan); exit;

?>

Proses login secara sederhana dapat digam bark an dengan langk ah- langk ah berik ut :

(10)

</body> </html>

Met hod y ang digunak an pada form t ersebut di at as adalah POST, sehingga usernam e dan passw ord y ang dim asuk k an oleh user t idak ak an dit am pilk an pada query st ring di alam at URL.

2. Halam an ot ent ik asi m enerim a usernam e dan passw ord y ang dim asuk k an oleh pengguna m elalui form pada t ahap sebelum ny a. Jik a ot ent ik asi berhasil dilak uk an, m ak a serv er ak an m em buat v ariabel session at au cook ie y ang m engindik asik an bahw a proses ot ent ik asi berhasil dilak uk an, m isalny a dengan k ode PHP berik ut :

<?php // filename: authenticate.php

session_start();

// buffer output, sehingga error yang mungkin muncul // tidak mengganggu proses redirect dengan fungsi header() // jika output muncul sebelum fungsi header dijalankan, // maka proses redirect akan gagal.

ob_start();

function correct($user, $pass) {

if( $user == "admin" && $pass == "rahasia" ) return true;

3. Set elah pengguna berhasil diot ent ikasi m elalui pr oses pada t ahap 2, m ak a pengguna ak an dialihk an ke halam an " secret .php" . Halam an ini bert ugas unt uk m em erik sa

// inisialisasi session, karena status otentikasi disimpan dalam session session_start();

if(isset($_SESSION[]) && $_SESSION[] == true) { echo "Selamat Anda berhasil login!";

(11)

header("Location: login.php"); exit; }

(12)

REFEREN SI

Vasw ani, Vik ram . 2005. How t o do Ev ery t hing w it h PHP & My SQL. McGraw - Hill/ Osborne. New York

Suehring, St ev e, Conv erce, Tim ; Park , Joy ce; 2009. PHP6 and My SQL 6 Bible. Wiley Publishing, I nc., I ndianapolis, I ndian a

Beighley , Lynn; Morrison, Michael. 2009. Head First PHP and My SQL. O'Reilly Media, I nc. USA.

PROPAGASI

A. La t ih a n da n D isk u si ( Pr opa ga si V e r t ik a l da n H or iz on t a l)

1. Buat lah sebuah script PHP y ang dapat digunak an unt uk m engak om odasi k ebut uhan unt uk login sepert i y ang t elah dicont ohk an dalam sub- bab Page Redirect ion, nam un m enggunak an cook ie sebagai t em pat unt uk m eny im pan inform asi st at us login pengguna.

B. Tu ga s ( Ev a lu a si m a n dir i)

1. Jelask an apa y ang dim ak sud dengan session, cook ie, dan HTTP header?

2. Mengapa page redirect ion dapat dilak uk an dengan m enggunak an fungsi header( ) y ang dim ilik i oleh PHP?

3. Mengapa k it a t idak disarank an unt uk m eny im pan passw ord pengguna k e dalam v ariabel cook ie? Bagaim ana j ik a passw ord t ersebut disim pan dalam session? Jelask an!

C. Pe n ga y a a n Kom pe t e n si ( Ev a lua si m a n dir i)

1. Buat lah sebuah halam an w eb y ang dapat m enam pilk an seluruh pengguna y ang sedang online ( t elah login) dalam k urun w ak t u 24 j am t erak hir besert a k apan w ak t u t erak hir pengguna t ersebut berhasil login.

2. Buat lah sebuah program k eranj ang belanj a sederhana unt uk t ok o online, dim ana pengguna bisa m em asuk k an daft ar barang belanj aan y ang dibeliny a k e dalam k eranj ang belanj a besert a j um lahny a unt uk dit am pilk an dalam pr oses check out . Cont oh w ebsit e t ok o online y ang m em ilik i fit ur aplik asi k eranj ang belanj a:

Gambar

Gambar 7.1 Session yang disimpan oleh web browser dalam bentuk cookie (atas) dan session yang disimpan dalam bentuk file oleh web server dalam folder / tmp (bawah)
Gambar 7.3 Tampilan halaman web ketika pertama dikunjungi oleh pengguna.
Gambar 7.4 Tampilan halaman web ketika dikunjungi oleh pengguna untuk kedua kalinya

Referensi

Garis besar

Dokumen terkait

Dari hal tersebut timbul ide dalam menggunakan zeolit sebagai media pengabsorp limbah merkuri pada tanah yang tercemar akibat proses penambangan emas oleh

Konstruksi Badan Pemberdayaan Perempuan Perlindungan Anak dan Keluarga Kota Bekasi yang dibentuk. berdasarkan Keputusan Kepala Badan Pemberdayaan Perempuan

Penelitian ini bertujuan untuk mengetahui : (1) mengetahui perbedaan hasil belajar siswa aspek kognitif pada pencapaian kompetensi pengukuran komponen elektronik kelas X

Pelelangan ) 2013 pada Badan Penanggulangan Bencana Kabupaten Aceh Barat Daya sumber dana APBK Tahun Anggaran 2013 yang bersifat Penuqjukan Langsung (PL). dengan daftff

Panitia Pengadaan Barang/Jasa Dinas Perhubungan, Komunikasi dan Informatika Kabupaten Muaro Jambi akan melaksanakan Pelelangan Umum dengan pascakualifikasi

Berdasarkan Berita Acara Pembuktian Klarifikasi Nomor : 03/BA.K/ULP-DHKIBP/2015 tanggal 17 April 2015, maka Pokja ULP IV Dinas Perhubungan, Komunikasi,

angka 36.5 yang berbunyi, setelah pemberitahuan adanya pelelangan gagal, maka Pokja ULP atau Pokja ULP Pengganti (apabila ada) meneliti dan menganalisis penyebab terjadinya

[r]