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.







Wah, keren mbak. Mumpung baru belajar php nih…. membantu sekali….
Tapi, perbedaan POST sama GET apa yak?
Ya mbak betul perbedaan POST dan GET. Makasi mbak atas keterangan saya mendapatkan pencerahan sedikit.Saya juga baru belajar php. Mbak bisa dijelaskan lagi lebih rinci mengenai register_globals() = on atau register_globals = off. ma
to : mas rick
Iya, insya Allah nanti saya tulis tentang register_globals()=on atau off yang lebih rinci.
Oya mbak saya tunggu lagi materinya.Soalnya saya pengen kecanduan php.Makasi sebelumnya.Salam
Iya. Nanti klo tidak ada di blog ini, mungkin saya posting di blog saya yang lain yaitu di http://adeisti.blogspot.com. Blog itu isinya lebih fokus ke Delphi-MySQL-PHP. Jadi silahkan coba akses blog tersebut.
Terima kasih.
teteh Euis tolong kasih contoh yang lebih detail donk tentang penggunaaan session, kalo bisa kasih contoh pada login form berikut script cek login dan logout nya.
makasih atas attensi nya
Ada salah satu contoh penggunaan session yang sudah saya buat, walaupun bukan form login, tapi sebenarnya hampir mirip, silahkan di akses di link berikut. http://adeisti.blogspot.com/2008/04/contoh-penggunaan-session.html
Untuk form login, nanti menyusul saya buatkan. Tapi, nanti aksesnya ke blog http://adeisti.blogspot.com saja. Karena sekarang tulisan2 tentang program saya posting di sana.
Terima kasih atas kunjungannya.
HAhah… nyari “penggunaan session” nyangkut ke blognya teh euis nh. HEhe.. makasih teh, lagi nyari kisi2 buat uas nh.
btw, msukin ke blogroll atuh :
http://ferireza.wordpress.com
-haturnuhun-
ya…ya…ya… thank’s atas ilmunye…
Hihi.. keren2..
siiippp mbak aku juga msih newbie di php saya coba bikin login sederhana tpi gagal trus apa register globalnya msih off g’ tau bru tau dri blognya mbak
mo tanya…
trs kalo ada bbrp file .php dan masing ada session_start(); trus mreka di-include(); kan dalam 1 file (misal index.php berisi 3 file yg masing ada session_start();nya )… knp ada pesan error y…??
apa session_start();nya jadi dibuat 1 aja di file index.php..?
Iya satu aja di index.php
mbak,,, kalo session UNIX gimana? penasaran…
infopertama.blogspot.com… good info thank’s
Notice: A session had already been started – ignoring session_start()
cara mengatasi error penggunaan session seperti d atas gmn??
saya mau nanya mbak,,,,,
misalkan ada halaman sbb :
1.index.php
2. gallery.php
3.admin.php>>>(yg bisa akses cma admin) trus masuk ke
4. index_admin.php.
nah ketika admin udh login dihalaman admin kn trus masuk ke index_admin.php,,tp admin ini lupa buat logout. dia lgsng masuk ke hal index.php. gmna cranya buat kita ngerti yg mengakses index.php itu admin ato pengunjung biasa???mohon balasannya..
manstap infonya gan