09071003002 session dan fungsinya

22
SESSION DAN FUNGSINYA DALAM PHP Nama : Sarifah Putri Raflesia Nim : 09071003002 Kelas : SI6B UNIVERSITAS SRIWIJAYA FAKULTAS ILMU KOMPUTER 0

Transcript of 09071003002 session dan fungsinya

Page 1: 09071003002 session dan fungsinya

SESSION DAN FUNGSINYA DALAM PHP

Nama : Sarifah Putri RaflesiaNim : 09071003002

Kelas : SI6B

UNIVERSITAS SRIWIJAYAFAKULTAS ILMU KOMPUTER

2010Daftar Isi

0

Page 2: 09071003002 session dan fungsinya

Sepintas Tentang Session ………………………………………………………………..2

Pertukaran Variable antar Script ………………………………………………………...8

Session Handling di Php ………………………………………………………………...9

Cara Kerja Session ………………………………………………………………………10

Contoh Aplikasi …………………………………………………………………………11

Referensi…………………………………………………………………………………16

1

Page 3: 09071003002 session dan fungsinya

Sepintas Tentang Session

Saat berinternet, kita tentu sering menjumpai situs yang mengharuskan pengunjung

melakukan login terlebih dahulu agar dapat mengakses informasi mereka. Misalnya saja

pada situs e-mail, disitu kita perlu mengisikan user name dan password sebelum

mengakses email, kemudian melakukan logout setelah selesai. Pada PHP terdapat fitur

bernama session handling yang bisa dipakai untuk keperluan otentikasi seperti di atas.

Pada dasarnya session adalah cara untuk menjaga suatu variabel tetap ada selama sesi

kunjungan user. Meskipun berpindah-pindah halaman, variabel session tetap ada dan bisa

diakses sampai session ditutup. Fasilitas session handling ini baru ada secara built-in

mulai PHP versi 4.

PHP mempunyai session (catatan aktivitas) yang digunakan untuk menjaga / memelihara

informasi akses dari seorang pengakses / pemakai aplikasi web. Session memungkinkan

pelacakan akses pemakai, pangaturan pemakaian aplikasi oleh pemakai dan

meningkatkan layanan situs web. Setiap pengunjung akan diberi sebuah id yang unik,

yang disebut dengan id session (session_id). ID ini dapat disimpan dalam suatu cookie

pada sisi user atau disertakan dalam URL. Session koneksi antara klien dan server akan

hilang atau putus apabila browser ditutup. Apabila browser dijalankan kembali dan

koneksi ke server dilakukan maka dianggap sebagai koneksi baru.

Fungsi-fungsi session :

1. session_start(), untuk memulai session.

session_start — Menginisialisasi data dari session.

Description

bool session_start ( void )

session_start() membuat sebuah session atau melanjutkan session sebelumnya

berdasarkan pada pengidentifikasi session via GET atau POST atau cookie

Untuk menggunakan session yang memiliki nama, panggil session_name()

sebelum memanggil session_start().

2

Page 4: 09071003002 session dan fungsinya

Ketika session.use_trans_sid tersedia, fungsi session_start() akan mendaftarkan

sebuah output handler internal untuk merekam ulang URL.

Jika pengguna menggunakan ob_gzhandler atau mirip dengan ob_start(), urutan fungsi

sangatlah penting untuk hasil yang sesuai. Sebagai contoh, ob_gzhandler haruslah

terdaftar sebelum memulai session.

Return Values

Fungsi ini akan mengembalikan nilai TRUE jika sebuah session berhasil berjalan, dan

FALSE jika sebaliknya.

Examples

Example #1 A session example: page1.php

- Mulai session dengan login terlebih dahulu (Script kode login bisa dilihat di lampiran)

<?

session_start();

if ($_SESSION['access']==false) {

echo "Login dulu...";

exit;

}

?>

<html>

<body>

<?php

// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';

3

Page 5: 09071003002 session dan fungsinya

$_SESSION['animal'] = 'cat';

$_SESSION['time'] = time();

// Works if session cookie was accepted

echo '<br /><a href="page2.php">page 2</a>';

// Or maybe pass along the session id, if needed

echo '<br /><a href="page2.php?'.SID.'">page 2</a>';

?>

<br><br><a href=logout.php>logout</a><br><br>

</body>

</html>

Setelah menampilkan page1.php, halaman kedua yaitu page2.php akan berisi data dari

session.

Example #2 A session example: page2.php

<?php

// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green

echo $_SESSION['animal']; // cat

echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php

echo '<br /><a href="page1.php">page 1</a>';

4

Page 6: 09071003002 session dan fungsinya

?>

2. session_destroy()

session_destroy — Menghancurkan semua data yang terdaftar dari sebuah session

Description

bool session_destroy ( void )

session_destroy() menghancurkan semua data yang berhubungan dengan session saat ini.

Hal ini tidak merubah variabel global yang berhubungan dengan session tersebut, Hal ini

juga tidak merubah cookie dari session. Untuk menggunakan lagi variabel sssion

tersebut, session_start() haruslah dipanggil.

Untuk membunuh session secara bersamaan, seperti proses log out user, id dari

session haruslah dalam keadaan tidak aktif. Jika sebuah cookie digunakan untuk

menciptakan session_id (sifat dasar), maka cookie dari session tersebut haruslah dihapus.

Dalam hal ini, sintak setcookie() dapat digunakan.

Return Values

Mengembalikan nilai TRUE jika sukses dan FALSE jika gagal.

Examples

Example #1 Menghancurkan sebuah session dengan $_SESSION

- Mulai session dengan login terlebih dahulu (Script kode login bisa dilihat di lampiran)

<?php

// Initialize the session.

// If you are using session_name("something"), don't forget it now!

session_start();

// Unset all of the session variables.

$_SESSION = array();

5

Page 7: 09071003002 session dan fungsinya

// If it's desired to kill the session, also delete the session cookie.

// Note: This will destroy the session, and not just the session data!

if (ini_get("session.use_cookies")) {

$params = session_get_cookie_params();

setcookie(session_name(), '', time() - 42000,

$params["path"], $params["domain"],

$params["secure"], $params["httponly"]

);

}

// Finally, destroy the session.

session_destroy();

?>

3. session_id(), untuk mengambil atau menentukan identitas sebuah session (session

id).

session_id — Mengambil atau mengatur session id saat ini.

Description

string session_id ([ string $id ] )

session_id() digunakan untuk mengambil atau mengatur session id saat ini.

SID yang konstan dapat juga digunakan untuk mengambil nama dari SID saat ini

dan session_id dalam bentuk string cocok untk ditambahkan kedalam URL.( lihat juga

session handling ).

Parameters

id

Jika id telah dispesifikasi, maka id tersebut akan menggantikan session_id saat

ini. Untuk itu, session_id() haruslah dipanggil sebelum session_start(). Tidak semua

karakter diperbolehkan untuk menjadi bagian dari session id . Hal ini bergantung pada

6

Page 8: 09071003002 session dan fungsinya

session handler. Sebagai contoh, session handler hanya memperbolehkan karakter a-z

A-Z 0-9 , (koma) dan – (kurang).

Catatan : ketika menggunakan cookie dari session , id yang terspesifikasi untuk

session_id() akan selalu mengirimkan sebuah cookie baru ketika session_start()

dipanggil, tak peduli jika session id saat ini sama dengan session id yang baru.

Return Values

session_id() mengembalikan session id untuk session saat ini atau strting kosong (“”) jika

tidak terdapat session pada saat ini.

Changelog

Version Description

5.0.0 karakter koma (,) dan minus (-) diperbolehkan dalam file dari session

handler .

4. session_register(), untuk mendaftarkan variabel ke sebuah session.

session_is_registered — Mengetahui apakah sebuah variabel telah terdaftar atau

belum dalam sebuah session.

Description

bool session_is_registered ( string $name )

Mengetahui apakah sebuah variabel telah terdaftar atau belum dalam sebuah session.

Warning

Fungsi ini tidak diperkenankan oleh PHP 5.3.0 dan dihapus pada PHP 6.0.0.

Parameters

name

Nama Variabel.

7

Page 9: 09071003002 session dan fungsinya

Return Values

session_is_registered() mengembalikan nilai TRUE jika terdapat variabel global yang

memiliki nama name terdaftar pada session saat ini, Jika sebaliknya akan mengembalikan

nilai FALSE.

Notes

Catatan: Jika $_SESSION (atau $HTTP_SESSION_VARS untuk PHP 4.0.6 atau kurang)

digunakan, gunakan isset() untuk mengecek variabel yang terdaftar dalam $_SESSION.

Caution

Jika menggunakan $_SESSION (or $HTTP_SESSION_VARS), maka jangan gunakan

session_register(), session_is_registered() dan session_unregister().

Pertukaran Variabel antar script

Bila suatu variabel didefinisikan secara global pada skrip PHP, maka variabel itu

memiliki lingkup hanya sebatas dalam skrip PHP itu saja. Variabel itu tidak dapat diakses

dari file PHP lain dengan cara biasa. Bila kita menginginkan variabel yang bisa diakses

dari banyak file PHP, kita perlu variabel yang bersifat superglobal.

Untuk itu, variabel harus dipropagasi atau dikirim ke server terlebih dahulu. Ada

beberapa cara untuk melakukannya. Pertama, variabel tersebut dikirim secara langsung

melalui string yang ditambahkan ke URL, seperti halnya metode GET dalam pengiriman

data. Contoh sederhananya pada URL berikut:

utama.php?halaman=1&userid=100

8

Page 10: 09071003002 session dan fungsinya

URL ini akan menuju ke file utama.php dan pada utama.php akan terdapat variabel

$halaman yang bernilai 1 dan variabel $userid bernilai 100.

Cara lain yaitu menggunakan cookies. Cookies adalah mekanisme penyimpanan data atau

variabel di sisi klien (browser). Dengan menyimpan variabel sebagai cookie, data

tersebut akan tetap ada sampai waktu kadaluarsa yang bisa ditentukan. Cookie biasa

dipakai di situs-situs untuk mengidentifikasi pengunjung yang mengakses situs mereka.

Misalnya pada aplikasi polling, dimana satu pengunjung hanya bisa melakukan vote satu

kali dalam sehari.

Session Handling di PHP

Contoh, misalkan kita akan meregister variabel bernama userid

session_register(“userid”);

Maka untuk mengisi userid dengan nilai 100.

$HTTP_SESSION_VARS["userid"] = 100;

Atau

$_SESSION[“userid”] = 100;

Bisa juga dengan cara yang lebih sederhana:

$userid = 100;

Cara yang terakhir bisa dilakukan bila option register_globals bernilai on (pada file

konfigurasi php.ini). Dengan begitu userid tersedia sebagai variabel global $userid dan

dapat diakses langsung. Pada PHP versi 4.2 ke atas, biasanya option ini dinonaktifkan

dengan alasan keamanan. Setiap skrip yang ingin memakai variabel session, harus

memulai session dahulu dengan fungsi session_start() yang dipanggil di awal skrip

sebagai header.

9

Page 11: 09071003002 session dan fungsinya

session_unregister()

Digunakan untuk mengunregister variabel dari suatu session.

session_destroy()

Menghancurkan semua variabel yang berhubungan dengan session.

Cara kerja Session:

Berikut ini adalah gambaran mengenai cara kerja session:

Saat pengunjung mengakses suatu halaman, pengunjung tersebut memulai session

(digunakan fungsi session_start()). Bila dalam konfigurasi php, session.auto_start diset ke

1 maka php akan melakukan start session secara otomatis.

Pengunjung tadi kemudian diberi pengenal berupa session id, Session id ini adalah

rangkaian karakter yang unik, misalnya 12345678xx.. Bersamaan dengan itu, pada sisi

server juga dibuat file ses_12345678xx yang berisi variabel-variabel session milik si

pengunjung. Variabel yang diregister dengan fungsi session_register() akan disimpan

dalam file ini.

Metode di atas adalah default. Sebenarnya anda juga bisa menentukan lokasi

penampungan variabel session anda sendiri, misalnya di database. Selanjutnya, saat

pengunjung memulai atau melanjutkan session (melalui session_start()) maka dia tinggal

mengirim session id-nya untuk memperoleh kembali variabel-variabel session miliknya

yang telah disimpan di server.

Pengiriman session id ke server bisa melalui 2 cara. Yang pertama, yaitu cara default,

dikirim melalui cookies. Session id berupa cookie PHPSESSID (default).

Ada kalanya dengan alasan tertentu, si pengunjung menonaktifkan cookies (bisa

dilakukan melalui setting browsernya). Bila hal ini terjadi, maka pengiriman session id

dilakukan dengan cara kedua, yaitu melalui query string (string yang ditambahkan ke

URL, seperti contoh di awal artikel).

10

Page 12: 09071003002 session dan fungsinya

Session akan berakhir saat fungsi session_destroy() dipanggil atau sewaktu user menutup

web browsernya.

Dari cara kerja session tadi, terlihat bahwa yang menjadi kunci pegangan si pengunjung

(di sisi client) hanyalah variabel session id, sedangkan variabel-variabel lain miliknya di

server. Adanya fasilitas session handling di PHP menjadikan proses diatas menjadi

sederhana dan mudah karena PHP melakukannya otomatis untuk anda.

Contoh aplikasi login sederhana.

Dengan menggunakan fungsi2 session, kita bisa membangun suatu mekanisme login.

Skenarionya begini: Pengunjung mengakses halaman utama index.php, disana dia

disodori form user dan password untuk login. Ia harus memasukkan username dan

password yang valid agar dapat mengakses informasi utama di situs ini. Kemudian

setelah selesai, disediakan link untuk logout.

Untuk itu kita membutuhkan satu tabel database untuk menampung data user yang

terdaftar. Dalam contoh ini dipilih MySQL karena telah umum dipakai serta gratis.

Pertama-tama kita siapkan dahulu sebuah database bernama session dan tabel bernama

user dengan struktur berikut:

CREATE DATABASE session;

CREATE TABLE user

(us_id int(10) AUTO_INCREMENT PRIMARY KEY,

us_nama varchar(32),

us_email varchar(50),

us_angkatan varchar(4),

us_url varchar(100),

us_password varchar(32)

)

11

Page 13: 09071003002 session dan fungsinya

Kemudian isilah tabel hingga setidaknya berisi satu user, misalnya.

INSERT INTO user (us_id,us_nama,us_email,us_angkatan,us_url,us_password)

VALUES

(1,’Sarifah’,’[email protected]’,’2002’,’http://Sarifahriz.cjb.net’,’passwordku’);

index.php

1 <?php

2

3 session_start();

4

5 echo "selamat datang";

6

7 if (!session_is_registered("status"))

8 { session_register("userid");

9 $userid = "";

10 session_register("status");

11 $status =0;

12 }

13

14 if ($status != "1")

15 {?> <form method=post action=login.php>

16 Nama id: <input type=text name=namaid><br>

17 Password : <input type=password name=passwd><br>

18 <input type=submit>

19 </form>

20 <?}

21 else

22 { // get data user dari database

23 mysql_connect("localhost","root","") or die("koneksi ke mysql gagal");

24 mysql_select_db("session") or die("selek database gagal");

12

Page 14: 09071003002 session dan fungsinya

25

26 $get_datauser = mysql_query("SELECT * FROM user WHERE us_id=$userid") or

die("");

27 if ($row = mysql_fetch_array($get_datauser) or die(""))

28 { $u_nama = $row[us_nama];

29 $u_email = $row[us_email];

30 $u_angkatan = $row[us_angkatan];

31 $u_url = $row[us_url];

32 }

33 // tampilkan konten disini

34 print "<p>Anda login sebagai $u_nama, angkatan $u_angkatan dengan email

$u_email

35 <br><a href=logout.php>logout</a>";

36 }

37 ?>

Pada skrip ini variabel session yang dipakai adalah userid dan status. Bila belum login,

maka nilai status=0, sedangkan bila sudah login, maka status=1. Saat pengunjung

berhasil login, userid akan diberi nilai sama dengan user id yang disimpan di database.

Jika tidak, maka userid kita biarkan kosong.Pertama-tama skrip memulai suatu session

dengan dipanggilnya fungsi session_start(), selanjutnya pada baris 7 akan dicek apakah

variabel userid dan status telah diregister. Jika belum, maka lakukan register.

Kemudian pada baris 14 dilakukan pengecekan status. Bila status=0, berarti user belum

login, maka form login dicetak, sebaliknya jika status=1, informasi utama akan

ditampilkan.

login.php

1 <?php

2 mysql_connect("localhost","root","") or die("koneksi ke mysql gagal");

3 mysql_select_db("session") or die("selek database gagal");

4

5 $namaid = addslashes($namaid);

13

Page 15: 09071003002 session dan fungsinya

6

7

8 $cheklogin = mysql_query("SELECT us_id FROM user WHERE (us_nama =

'$namaid') AND (us_password = '$passwd')") or die(mysql_error());

9

10 if (!mysql_num_rows($cheklogin))

11 { print "Anda tidak terdaftar, silakan register dulu";

12 }

13 else

14 { session_start();

15

16 // set user id

17 if ($row = mysql_fetch_array($cheklogin) or die(""))

18 { $userid = $row[us_id];

19 }

20

21 $status = "1"; // set status login = 1

22 header("location:index.php"); // ke halaman index

23 }

24 ?>

Pada baris 8 dilakukan pengecekan username dan password dalam database. Jika cocok,

maka nilai status=1, sedangkan userid=user id yang sesuai dalam database. Perhatikan

bahwa session_start(); juga dipanggil di awal, hal ini supaya skrip ini bisa mengenali

$userid dan $status sebagai variabel session.

Selanjutnya, pengunjung dikembalikan ke halaman index.php untuk disuguhi informasi.

logout.php

1 <?php

2 session_start();

3 {

4 $userid = "";

14

Page 16: 09071003002 session dan fungsinya

5 $status = "0";

6 print "berhasil logout

7 <br><a href=index.php>kembali ke halaman utama</a>";

8 }

9 ?>

Dalam proses logout, pada baris 3, variabel userid dan status akan dikosongkan, sehingga

pengunjung kembali dalam keadaan belum login.

15

Page 17: 09071003002 session dan fungsinya

Referensi

http://www.ilmuwebsite.com/tutorial-php

http://www.php.net

http://lecturer.eepis-its.edu/~zenhadi/kuliah/internet/Modul%20PHPb%204.pdf

16