09071003002 session dan fungsinya
Transcript of 09071003002 session dan fungsinya
SESSION DAN FUNGSINYA DALAM PHP
Nama : Sarifah Putri RaflesiaNim : 09071003002
Kelas : SI6B
UNIVERSITAS SRIWIJAYAFAKULTAS ILMU KOMPUTER
2010Daftar Isi
0
Sepintas Tentang Session ………………………………………………………………..2
Pertukaran Variable antar Script ………………………………………………………...8
Session Handling di Php ………………………………………………………………...9
Cara Kerja Session ………………………………………………………………………10
Contoh Aplikasi …………………………………………………………………………11
Referensi…………………………………………………………………………………16
1
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
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
$_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
?>
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
// 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
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
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
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
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
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
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
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
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
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
Referensi
http://www.ilmuwebsite.com/tutorial-php
http://www.php.net
http://lecturer.eepis-its.edu/~zenhadi/kuliah/internet/Modul%20PHPb%204.pdf
16