Bagaimana Menggunakan Session dan Variabel Session dalam PHP
Penanganan session adalah konsep utama dalam PHP yang memungkinkan informasi pengguna dapat disimpan di semua halaman dari sebuah website atau aplikasi. Di artikel kali ini, kalian akan mempelajari dasar-dasar dari penangan session di PHP.
Kita akan mulai dengan penjelasan mengenai bagaimana session bekerja dan apa kaitannya dengan cookies. Lalu kita akan melihat beberapa potongan kode yang akan menunjukan bagaimana bekerja dengan session. Kalian akan mempelajari bagaimana membuat dan menghapus session, serta bagaimana mengubah variabel session.
Apa itu Session di PHP..?
Session adalah mekanisme untuk menyimpan dan mempertahankan informasi di berbagai halaman web yang berbeda untuk mengidentifikasi pengguna saat mereka menelusuri sebuah situs atau aplikasi. Apakah kalian bertanya-tanya mengapa session dibutuhkan untuk sebuah website..? Untuk melihat kenapa session dibutuhkan, kita harus kembali ke belakang dan melihat bagaimana protokol HTTP dirancang untuk bekerja.
Protokol HTTP merupakan protokol yang tidak memiliki state, yang berarti bahwa tidak mungkin server dapat mengingat pengguna tertentu di antara beberapa request sekaligus. Contohnya, ketika kalian mengakses sebuah halaman web, server hanya bertanggung jawab untuk menyediakan konten dari halaman yang di request (Di Minta) tersebut saja.
Jadi ketika kalian mengakses halaman lain dari website yang sama, server web menginterpretasi setiap dan semua request secara terpisah, seolah-olah mereka tidak berhubungan antara satu sama lain. Tidak ada kemungkinan ataupun cara bagi server untuk dapat mengetahui bahwa setiap request berasal dari pengguna yang sama.
Diagram berikut secara singkat menggambarkan protokol HTTP.
Di dalam model ini, jika kalian ingin menampilkan spesifik informasi khusus tentang pengguna, kalian harus mengautentikasi pengguna di setiap requestnya. Bayangkan jika kalian harus terus mengetikkan username dan password kalian di setiap halaman yang menampilkan informasi profil kalian!
Session memungkinkan kalian untuk berbagi informasi ke semua halaman yang berbeda dalam satu situs atau aplikasi sehingga dapat membantu menjaga dan mempertahankan state.
Hal ini memungkinkan server mengetahui bahwa semua request berasal dari pengguna yang sama, sehingga situs bisa menampilkan informasi spesifik dari pengguna serta preferensi khusus pengguna.
Alur Login dengan Session dan Cookies
Mari kita lihat alur login yang umum untuk sebuah website agar dapat mengerti dan memahami apa yang terjadi di balik layar.
- Seorang user / pengguna membuka halaman login dari sebuah website.
- Setelah memasukkan dan mengirimkan form login, server di sisi lain mengautentikasi request dengan memvalidasi kredensial yang dimasukkan.
- Jika kredensial yang dimasukkan oleh pengguna valid, server membuat sebuah session baru. Server menghasilkan nomor random yang unik, yang bernama / sering di sebut session id. Dia juga menciptakan file baru di server yang digunakan untuk menyimpan informasi spesifik dari session.
- Selanjutnya, session id diberikan kembali ke pengguna, beserta resource yang di request. Di balik layar, session id ini dikirim dalam bentuk cookie PHPSESSID di header response.
- Saat browser menerima response dari server, dia menemukan cookie PHPSESSID header. Jika cookie diizinkan oleh browser, maka dia akan menyimpan cookie PHPSESSID tersebut, yang menyimpan session id yang diberikan oleh server.
- Untuk request selanjutnya, cookie PHPSESSID dikirim kembali ke server. Ketika server menemukan cookie PHPSESSID, dia akan mencoba menginisialisasi session dengan session id tersebut. Hal tersebut dilakukan dengan memuat file session yang dibuat saat inisialisasi session. Lalu, dia akan menginisialisasi variabel array super-global $_SESSION dengan data yang disimpan dalam file session.
Dengan cara ini, data pengguna dapat dipertahankan untuk semua request yang berbeda, dan pengguna dapat tetap login sepanjang session.
Diagram berikut menggambarkan bagaimana protokol HTTP bekerja dengan session.
Sekarang kalian sudah melihat pengantar singkat tentang bagaimana session bekerja, selanjutnya kita akan membuat beberapa contoh praktikal yang mendemonstrasikan bagaimana membuat dan memanipulasi variabel session.
Bagaimana Memulai Session
Di bagian ini, kita akan membahas bagaimana cara memulai session di PHP.
Kapanpun kalian ingin berurusan dengan variabel session, kalian perlu memastikan session sudah dimulai. Ada beberapa cara Anda dapat memulai session di PHP.
Menggunakan Fungsi session_start
Ini adalah metode yang akan sering kalian temui, dimana session dimulai dengan fungsi session_start.
1: <?php 2: // start a session 3: session_start(); 4: // manipulate session variables 5: ?>
Hal yang penting adalah fungsi session_start harus dipanggil di awal script, sebelum output apapun dikirim ke browser. Jika tidak kalian akan menjumpai error yang terkenal Headers are already sent.
Memulai Session Secara Otomatis
Jika ada kebutuhan untuk menggunakan session di seluruh aplikasi kalian, kalian juga dapat memilih untuk memulai session secara otomatis tanpa menggunakan fungsi session_start.
Ada sebuah konfigurasi di file php.ini yang dapat membuat kalian memulai session secara otomatis untuk semua request session.auto_start. Secara default, itu diatur atau di set 0, dan kalian dapat mengaturnya menjadi 1 untuk mengaktifkan fungsi startup otomatis.
1: session.auto_start = 1
Di sisi lain, jika kalian tidak memiliki akses ke file php.ini, dan kalian menggunakan server web Apache, kalian juga dapat mengatur variabel ini di file .htaccess.
1: php_value session.auto_start 1 Jika kalian menambahkan baris di atas ke file .htaccess, maka itu akan memulai session secara otomatis di aplikasi PHP kalian.
Bagaimana Mendapatkan Session Id
Seperti yang kita bahas sebelumnya, server membuat nomor unik untuk setiap session baru. Jika kalian ingin mendapatkan session id, kalian dapat menggunakan fungsi session_id, seperti yang terlihat di potongan kode berikut ini.
1: <?php
2: session_start();
3: echo session_id();
4: ?>
Itu akan memberikan session id saat ini. Fungsi session_id ini menarik karena dia juga dapat menerima satu argumen sebuah session id. Jika kalian ingin mengganti session id yang dihasilkan oleh sistem dengan milik kalian sendiri, kalian dapat memberikannya ke argumen pertama dari fungsi session_id.
1: <?php
2: session_id(YOUR_SESSION_ID);
3: session_start();
4: ?>
Perlu diperhatikan bahwa fungsi session_id harus ditempatkan sebelum session_start dipanggil ketika kalian ingin memulai session dengan sebuah kustom session id.
Bagaimana Membuat Variabel Session
Di bagian ini, kita akan mengeksplorasi tentang bagaimana menginisialisasi variabel session di PHP.
Seperti yang kita bahas sebelumnya, ketika session dimulai, array super-global $_SESSION diinisialisasi dengan informasi yang sesuai. Secara default, dia diinisialisasi dengan array kosong, dan kalian dapat menyimpan informasi tambahan dengan menggunakan key-value pair.
Mari kita lihat contoh kode berikut yang mendemonstrasikan bagaimana menginisialisasi variabel session.
1: <?php 2: // start a session 3: session_start(); 4: // initialize session variables 5: $_SESSION['logged_in_user_id'] = '1'; 6: $_SESSION['logged_in_user_name'] = 'eMJe'; 7: // access session variables 8: echo $_SESSION logged_in_user_id']; 9: echo $_SESSION ['logged_in_user_name']; 10: ?>
Seperti yang dapat kalian lihat, kita memulai session di bagian awal script dengan menggunakan fungsi session_start. Setelah itu, kita menginisialisasi dua variabel session. Terakhir, kita mengakses variabel tersebut dengan menggunakan $_SESSION super-global.
Ketika kalian menyimpan data di session dengan menggunakan $_SESSION super-global, itu nantinya akan disimpan di file session yang sesuai di server yang telah dibuat saat session dimulai. Dengan ini, data session akan dibagikan ke semua request.
Seperti yang telah kita bahas, informasi session dibagikan ke semua request, sehingga variabel session yang diinisialisasi di satu halaman dapat diakses dari halaman yang lainnya juga, sampai session-nya kadaluwarsa atau berakhir. Secara umum, session kadaluwarsa atau berakhir ketika browser ditutup.
Bagaimana Memodifikasi dan Menghapus Variabel Session
Kalian dapat memodifikasi atau menghapus variabel session yang telah dibuat sebelumnya di aplikasi dengan cara yang sama seperti variabel PHP biasa.
Mari kita lihat bagaimana memodifikasi variabel session.
1: <?php 2: session_start(); 3: if (!isset($_SESSION ['count'])) 4: { 5: $_SESSION [''] = 1; 6: } 7: else 8: { 9: ++$_SESSION['']; 10: } 11: echo $_SESSION ['count']; 12: ?>
Pada kode di atas, kita memeriksa jika variabel $_SESSION[‘count’] sudah diatur sebelumnya. Jika belum diatur, kita akan mengaturnya menjadi 1, sebaliknya kita akan menambahkanya dengan 1. Jadi, jika kalian me-refresh halaman ini beberapa kali, kalian akan melihat bahwa counter ditambahkan dengan satu setiap saat!
Di samping itu, jika kalian ingin menghapus variabel session, kalian dapat menggunakan fungsi unset, seperti yang terlihat di potongan kode berikut.
1: <?php 2: // start a session 3: session_start(); 4: // initialize a session variable 5: $_SESSION ['logged_in_user_id'] = '1'; 6: // unset a session variable 7: unset( $_SESSION ['logged_in_user_id']); 8: ?>
Dengan demikian, kalian tidak bisa lagi mengakses variabel $_SESSION[‘logged_in_user_id’] karena variabel itu sudah dihapus dengan fungsi unset. Jadi itulah caranya untuk mengatur informasi session.
Bagaimana Menghapus Session
Di bagian ini, kita akan melihat bagaimana kalian bisa menghapus session. Di bagian sebelumnya, kita membahas fungsi unset, yang digunakan jika kalian ingin menghapus spesifik variabel session. Di samping itu, jika kalian ingin menghapus semua data yang berhubungan dengan session sekaligus, kalian dapat menggunakan fungsi session_destroy.
Mari kita coba untuk mengerti bagaimana itu bekerja dengan menggunakan contoh berikut.
1: <?php 2: // start a session 3: session_start(); 4: // assume that we’ve initialized a couple of session variables in the other script already 5: // destroy everything in this session 6: session_destroy(); 7: ?>
Fungsi session_destroy menghapus semua yang disimpan di session saat ini. Sehingga, kita akan melihat variabel $_SESSION kosong di request selanjutnya karena data session yang disimpan di disk sudah dihapus oleh fungsi session_destroy.
Secara umum, kalian akan menggunakan fungsi session_destroy saat pengguna logout.
Kesimpulan
Di artikel ini, kita mengeksplorasi dasar-dasar dari penanganan session di PHP. Ini adalah konsep utama yang memungkinkan kalian untuk dapat mempertahankan informasi di seluruh halaman web.
Di setengah bagian pertama artikel, kita membahas konsep dasar dari session, dan kemudian kita membuat beberapa contoh PHP untuk mendemonstrasikan bagaimana kalian dapat membuat dan menghapus session serta memanipulasi variabel session.
Mungkin itu saja untuk tutorial yang bisa sampaikan kali ini, see you next time :).



Post a Comment
Untuk menyisipkan kode pendek, gunakan <i rel="code"> ... KODE ... </i>
Untuk menyisipkan kode panjang, gunakan <i rel="pre"> ... KODE ... </i>
Untuk menyisipkan gambar, gunakan <i rel="image"> ... URL GAMBAR ... </i>