Di dalam sebuah website atau aplikasi basis web,
terutama yang memiliki jumlah halaman yang banyak, seringkali dibutuhkan
suatu kesinambungan dari informasi-informasi tertentu pada saat
pengunjung berpindah-pindah dari satu halaman ke halaman lain. Ambil
contoh aplikasi toko online yang menyediakan beberapa kategori barang.
Satu kategori barang ditampilkan dalam sebuah halaman web tersendiri.
Jika pengunjung hendak membeli beberapa barang dengan kategori barang
yang berbeda-beda, maka sudah pasti ia akan bolak-balik dari satu
halaman kategori ke halaman kategori yang lain. Tentu saja informasi
dari barang-barang yang telah dibeli sebelumnya harus tetap dijaga
sekalipun pengunjung tersebut telah berpindah ke halaman kategori barang
yang lain.
Adanya kemampuan melakukan koneksi ke
database yang dimiliki oleh pemrograman semacam PHP atau ASP sangat
membantu dalam menyimpan informasi-informasi tersebut, akan tetapi jika
setiap hal yang terjadi harus disimpan ke dalam database, maka beban
server akan menjadi sangat berat sehingga dapat berakibat server
tersebut menjadi lamban bila diakses. Belum lagi ukuran database bisa
membengkak sangat besar, dan itu jelas tidak ekonomis.
Oleh
karena itu diperlukan suatu alternatif lain. Session adalah jawabannya.
Session memiliki kemampuan untuk menyimpan informasi secara
berkesinambungan asalkan session itu masih "aktif". Pada PHP 3 session
belum dikenal, sehingga saat itu PHP kurang begitu dilirik oleh para web
developer. Untunglah para programmer PHP tanggap sehingga mulai PHP 4
dan diatasnya session telah dikenal. Dan ternyata memang reputasi PHP
meroket dengan cepat semenjak versi 4 dirilis.
Ada beberapa cara yang dapat dilakukan untuk memulai sebuah session. Yang pertama adalah dengan menetapkan nilai session.auto_start
di php.ini menjadi 1 atau on. Dengan demikian maka setiap sebuah
aplikasi yang dibangun dengan PHP diakses, seketika itu pulalah sebuah
session akan otomatis "aktif". Namun sekalipun cara ini tidak salah,
tetapi amat sangat tidak dianjurkan. Mengapa? Karena secara default
nilai session.auto_start di php.ini adalah 0 atau off.
Anda memang bisa mengedit php.ini di komputer Anda, akan tetapi bila
suatu ketika Anda harus melakukan web hosting di tempat lain, Anda tentu
tidak berhak mengubah file php.ini di web server tersebut. Dan jika
php.ini di server tersebut dibiarkan default apa adanya, maka aplikasi
Anda tidak akan berjalan baik di server tersebut.
Untuk
itu dianjurkan menggunakan cara lain dalam mengaktifkan sebuah session.
Ada dua cara yang dapat digunakan dalam mengaktifkan session tanpa
mengedit php.ini, yaitu secara eksplisit dan secara implisit.
Pengaktifan session secara eksplisit dilakukan dengan fungsi session_start(), sedangkan secara implisit menggunakan fungsi session_register().
Penggunaan
fungsi session_start() tentunya jelas. Dengan menjalankan fungsi
tersebut, maka sebuah session akan dimulai. Fungsi ini tidak memerlukan
parameter apapun, sehingga sintaks penggunaanya adalah dengan langsung
saja menuliskan fungsi session_start() tersebut. Sedangkan fungsi session_register()
pada prinsipnya adalah "mendaftarkan" variabel sehingga
variabel-variabel tersebut akan dikenal sepanjang sebuah session
sekaligus memulai sebuah session apabila belum dimulai. Sintaks
penggunaan fungsi session_register() adalah sebagai berikut:
session_register(variabel1[,variabel2[,...]])
Harap
diperhatikan, nama variabel di sini ditulis tanpa tanda $ di depannya.
Setelah sebuah variabel di register, maka otomatis variabel tersebut
akan menjadi variabel session. Contoh:
session_register("var1")
Nantinya
dalam rangkaian aplikasi web tersebut, variabel $var1 akan dikenal
sebagai variabel session dan bersifat global. Namun sayangnya hal ini
tidak lagi berlaku sejak PHP 4.2.0 dan diatasnya, karena nilai
register_globals di php.ini adalah off. Sebelum PHP 4.2.0 nilai
register_globals adalah on. Sebagai gantinya, PHP memperkenalkan
superglobals array untuk menangkap variabel-variabel session tersebut.
Superglobal arrays tersebut adalah $_SESSION. Sebelum versi 4.0.6 Anda juga dapat menggunakan $HTTP_SESSION_VARS.
Kedua
array ini bersifat asosiatif dan sebagai indeksnya adalah nama dari
variabel session yang hendak digunakan. Sebagai akibat dari perubahan
ini, maka fungsi session_register() tidak lagi diperlukan. Efek dominonya, fungsi session_unregister() dan session_is_registered() juga tidak lagi diperlukan. Fungsi session_unregister()
adalah kebalikan dari fungsi session_register(), yaitu untuk "mencabut"
variabel dari sebuah session, sedangkan fungsi session_is_registered()
digunakan untuk memeriksa apakah sebuah variabel pernah didaftarkan pada
sebuah session atau tidak.
Lalu sekarang
bagaimana caranya mendaftarkan variabel ke dalam session dan mencabut
variabel dari session serta memeriksa apakah variabel tersebut pernah
didaftarkan atau belum?
Untuk mendaftarkan
variabel ke dalam session, Anda tinggal menggunakan array $_SESSION
saja. Misalnya Anda ingin memasukkan variabel var1 sebagai variabel
session, maka caranya adalah sebagai berikut:
$_SESSION['var1'] = nilai
Jadi
prinsipnya adalah sama dengan deklarasi implisit variabel biasa. Untuk
menghapus dan memeriksa variabel session tersebut, Anda dapat "meminjam"
fungsi variabel biasa yaitu unset() dan isset(). Bahkan fungsi-fungsi
variabel yang lain dapat juga digunakan dalam pengolahan variabel
session ini.
Fungsi unset() digunakan untuk
menghapus variabel, sedangkan fungsi isset() digunakan untuk memeriksa
apakah variabel tersebut sudah pernah dideklarasikan atau belum. Untuk
menghapus variabel session Anda juga dapat menggunakan cara di bawah
ini:
$_SESSION = array();
Dengan
demikian, array $_SESSION dideklarasikan sebagai array baru yang
kosong. Pada akhir aplikasi jangan lupa untuk menghapus seluruh
informasi session ini. Fungsi yang digunakan adalah session_destroy().
Berikut
ini akan diberikan contoh penggunaan session. Kita akan memanfaatkan
contoh Artikel sebelumnya yaitu buat_form.html dan proses.php. Biarkan
file buat_form.html seperti apa adanya sedangkan file proses.php di edit
menjadi sebagai berikut:
<?php session_start(); ?>
<HTML>
<HEAD>
<TITLE> Fungsi Session </TITLE>
</HEAD>
<BODY>
<?php
$_SESSION['nama'] = $_POST['nama'];
$_SESSION['umur'] = $_POST['umur'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['waktu'] = date("H:s:i");
?>
<h1> Hallo <?=$_SESSION['nama']?> </h1>
<h2> Selamat Datang di situs Saya </h2>
Umur Anda saat ini adalah <?=$_SESSION['umur']?> tahun <br />
Alamat email Anda adalah <?=$_SESSION['email']?> <br />
Anda login pada jam <?=$_SESSION['waktu']?> <br />
<a href="http://localhost/next.php"> Klik di sini </a> untuk menuju ke halaman berikut.
</BODY>
</HTML>
Setelah itu buatlah sebuah file lagi bernama next.php yang isinya sebagai berikut:
<?php session_start(); ?>
<HTML>
<HEAD>
<TITLE> Halaman Dua </TITLE>
</HEAD>
<BODY>
<h1> Hallo <?=$_SESSION['nama']?> </h1>
<h2> Anda memasuki halaman kedua di situs Saya </h2>
Berikut adalah informasi yang Anda bawa dari halaman pertama:
<hr>
Umur Anda saat ini adalah <?=$_SESSION['umur']?> tahun <br />
Alamat email Anda adalah <?=$_SESSION['email']?> <br />
Anda login pada jam <?=$_SESSION['waktu']?>
<hr>
<?php
$_SESSION=array();
session_destroy();
?>
</BODY>
</HTML>
Jalankan
file buat_form.html, lalu isikan data-data pada form tersebut. Setelah
Anda mengklik tombol submit, maka browser akan menuju ke file
proses.php. Pada file proses.php akan terdapat sebuah link untuk menuju
ke halaman next.php. Jika link ini Anda klik, maka browser akan menuju
ke halaman next.php dan semua nilai variabel yang didaftarkan ke dalam
session, yaitu variabel $_SESSION['nama'], $_SESSION['umur'],
$_SESSION['email'], dan $_SESSION['waktu'] akan dipertahankan pada
halaman next.php. Jika variabel pada file proses.php tidak dimasukkan ke
dalam session, maka nilainya tidak akan muncul pada halaman next.php.
Perhatikan bahwa fungsi session_start() harus dituliskan pada bagian
skrip paling awal sebelum ada output apapun yang diberikan kepada
browser, selamat mencoba :-D.
0 Komentar untuk "Membuat Session dengan PHP"
Silahkan berkomentar dengan bijak dan positif. Komentar anda menunjukkan sikap anda. Terima kasih :-)