Rabu, April 02, 2008

Penggunaan SESSION PHP

Bagi programmer web yang sudah biasa menggunakan PHP, mungkin bahasan mengenai Session ini merupakan hal yang tidak asing lagi, karena setiap membuat aplikasi berbasis web pasti menggunakan yang namanya Session. Namun bagi programmer web pemula yang menggunakan PHP, maka aturan-aturan penggunaan session ini sebaiknya di ketahui dan di perhatikan, agar tidak mengalami kejadian seperti yang saya alami.

Sebagai programmer PHP pemula, saya punya pengalaman yang menarik dalam masalah Session ini. Pada saat itu saya membuat web di komputer yang menggunakan PHP 5.0.2 dan berjalan dengan lancar aplikasi yang saya buat tersebut. Namun ketika saya pindahkan ke komputer yang menggunakan PHP 5.2.0, betapa kagetnya saya karena tidak bisa menyimpan Session. Waktu itu saya benar-benar bingung kenapa ini terjadi. Saya cek di phpinfo() nya semua spesifikasi PHPnya. Saya lihat register_globalsnya OFF. Pada waktu itu saya lupa juga bahwa kalau register_globals nya OFF, maka antara metode post dan get nya harus sesuai ketika mengirim dan menerimanya. Pada saat itu, saya menyangka web server nya yang error, dan coding php saya ga ada masalah. Oleh karena itu saya tidak mengecek ulang coding saya, karena merasa di komputer lain juga berjalan lancar.

Kesalahan coding saya ketahuan ketika saya tanyakan ke salah seorang teman. Karena ternyata pada komputer yang sebelumnya itu bisa berjalan lancar, karena ternyata register_globals nya ON, dimana mengabaikan jenis metode pengirimannya get atau post. Ternyata coding saya tidak standar dibagian metode pengiriman dan penerimaannya baik itu yang metode post ataupun yang get. Selain itu, pada beberapa file saya tidak menempatkan fungsi session_start() di paling atas coding php, padahal saya menggunakan variable session yang register di halaman sebelumnya. Dari kejadian ini saya mengambil pelajaran yang sangat berharga dan semoga ini juga bermanfaat bagi para programmer php pemula.

Kesimpulan dalam penggunaan Session PHP :

1. Tempatkan fungsi session_start() dibagian paling atas coding php, tidak boleh didahului oleh coding apapun.

2. Perhatikan penamaan variable session ketika session_register() huruf besar kecilnya (case sensitive), karena ketika penggunaan variable session tersebut harus sama jenis hurufnya. (Sebenarnya bukan hanya variable session saja yang bersifat case sensitive tapi juga penamaan variable lainnya di PHP sifatnya case sensitive, termasuk penamaan komponen misalnya name textfiled, textarea, list/menu dll).

3. Setiap kali akan menggunakan variable session, maka harus dituliskan session_start() dibagian paling atas coding.

4. Ketika metode pengiriman variable menggunakan metode post, maka ketika menerima/membaca variable nya pun harus post. Begitu pula ketika metode nya get, maka menerimanya juga harus get.

Misalkan : formlogin.php

.. form action="login.php" method="post" name="form1" ..

……………………

.. input name="txtuser" type="text" class="LongText" ..

.. input name="txtpass" type="text" class="LongText" ..

……………………

login.php

session_start();

if ( (! empty(trim($HTTP_POST_VARS['txtuser'])) && (!empty(trim($HTTP_POST_VARS['txtpass']))) )

{

session_register('SES_USER');

session_register('SES_PASS');

$HTTP_SESSION_VARS['SES_USER'] = $HTTP_POST_VARS['txtuser'];

$HTTP_SESSION_VARS['SES_PASS'] = $HTTP_POST_VARS['txtpass'];

}

…………………..

Keterangan :

Karena di atas kita menggunakan method Post, maka ketika menerima/membaca variabelnya kita menggunakan $HTTP_POST_VARS[], jika di atas anda menggunakan method Get, maka anda harus menggunakan $HTTP_GET_VARS[].

Kepada teman-teman para master PHP yang membaca tulisan ini, apabila apa yang saya tuliskan di atas ada yang salah mohon dikoreksi dengan mengisi komentar. Atau apabila mau menambahkan tulisan tersebut, saya persilahkan. Saya sangat mengharapkan koreksi dari anda semua. Karena saya menulis berdasarkan pengalaman yang saya alami.

Tidak ada komentar:

Ayo Peka! Stop Pembalut Sekali Pakai

  “Saya paling tak suka kalau pegiat lingkungan berteriak betapa sulitnya mengelola sampah pembalut tapi dia sendiri tetap memakainya!“ *** ...