Dalam tutorial ini Anda akan belajar cara menyimpan data tertentu di server secara sementara menggunakan sesi PHP
Apa itu Sesi
Meskipun Anda dapat menyimpan data menggunakan cookie tetapi memiliki beberapa masalah keamanan. Karena cookie disimpan di komputer pengguna, penyerang dapat dengan mudah memodifikasi konten cookie untuk memasukkan data yang berpotensi berbahaya ke dalam aplikasi Anda yang dapat merusak aplikasi Anda
Juga setiap kali browser meminta URL ke server, semua data cookie untuk situs web secara otomatis dikirim ke server dalam permintaan tersebut. Ini berarti jika Anda telah menyimpan 5 cookie di sistem pengguna, masing-masing berukuran 4KB, browser perlu mengunggah 20KB data setiap kali pengguna melihat halaman, yang dapat memengaruhi performa situs Anda
Anda dapat menyelesaikan kedua masalah ini dengan menggunakan sesi PHP. Sesi PHP menyimpan data di server daripada di komputer pengguna. Dalam lingkungan berbasis sesi, setiap pengguna diidentifikasi melalui nomor unik yang disebut pengidentifikasi sesi atau SID. ID sesi unik ini digunakan untuk menautkan setiap pengguna dengan informasi mereka sendiri di server seperti email, postingan, dll
Tip. ID sesi dihasilkan secara acak oleh mesin PHP yang hampir tidak mungkin ditebak. Selanjutnya, karena data sesi disimpan di server, tidak harus dikirim dengan setiap permintaan browser
Memulai Sesi PHP
Sebelum Anda dapat menyimpan informasi apa pun dalam variabel sesi, Anda harus memulai sesi terlebih dahulu. Untuk memulai sesi baru, cukup panggil fungsi PHP session_start(). Ini akan membuat sesi baru dan menghasilkan ID sesi unik untuk pengguna
Kode PHP pada contoh di bawah hanya memulai sesi baru
Fungsi session_start()_ pertama memeriksa untuk melihat apakah sesi sudah ada dengan mencari keberadaan ID sesi. Jika menemukan satu, i. e. jika sesi sudah dimulai, itu mengatur variabel sesi dan jika tidak, itu memulai sesi baru dengan membuat ID sesi baru
Catatan. Anda harus memanggil fungsi session_start()_ di awal halaman i. e. sebelum output apa pun dihasilkan oleh skrip Anda di browser, seperti yang Anda lakukan saat menyetel cookie dengan fungsi setcookie()
Menyimpan dan Mengakses Data Sesi
Anda dapat menyimpan semua data sesi Anda sebagai key-value pair di $_SESSION[] superglobal array. Data yang disimpan dapat diakses selama masa sesi. Pertimbangkan skrip berikut, yang membuat sesi baru dan mendaftarkan dua variabel sesi
Untuk mengakses data sesi yang kami atur pada contoh kami sebelumnya dari halaman lain di domain web yang sama — cukup buat ulang sesi dengan memanggil session_start() lalu berikan kunci yang sesuai ke array asosiatif 1
Kode PHP pada contoh di atas menghasilkan keluaran berikut
Catatan. Untuk mengakses data sesi di halaman yang sama tidak perlu membuat ulang sesi karena sudah dimulai di bagian atas halaman
Menghancurkan Sesi
Jika Anda ingin menghapus data sesi tertentu, cukup hapus kunci yang sesuai dari array asosiatif 1, seperti yang ditunjukkan pada contoh berikut
Namun, untuk menghancurkan sesi sepenuhnya, cukup panggil fungsi 3. Fungsi ini tidak memerlukan argumen apa pun dan satu panggilan akan menghancurkan semua data sesi
Catatan. Sebelum menghancurkan sesi dengan fungsi _3, Anda harus terlebih dahulu membuat ulang lingkungan sesi jika belum ada menggunakan fungsi session_start(), sehingga ada sesuatu yang akan dihancurkan
Setiap sesi PHP memiliki nilai batas waktu — durasi, diukur dalam detik — yang menentukan berapa lama sesi harus tetap hidup tanpa adanya aktivitas pengguna. Anda dapat menyesuaikan durasi timeout ini dengan mengubah nilai variabel 6 di file konfigurasi PHP (7)
Ada dua fungsi PHP yang sangat mirip session_destroy() & session_unset(). Keduanya tampaknya menghapus semua variabel yang terdaftar ke suatu sesi tetapi ada perbedaan di antara keduanya
fungsi session_destroy(). Itu menghancurkan semua data yang terkait dengan sesi saat ini. Itu tidak menghapus variabel global apa pun yang terkait dengan sesi, atau menghapus cookie sesi
Sintaksis
bool session_destroy( void )fungsi session_unset(). Itu hanya menghapus variabel dari sesi dan sesi masih ada. Hanya data yang terpotong
Sintaksis
bool session_unset( void )Contoh 1. Contoh ini menyimpan sesi dengan menggunakan session. file php
<?php
// Function to start session
session_start();
// Display the session id
echo session_id();
bool session_unset( void )1
bool session_unset( void )2bool session_unset( void )3bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6bool session_unset( void )7
________12______8echo <?php0 <?php1<?php2<?php3
<?php_4
<?php5 <?php6
________12______8echo <?php0 <?php1 1<?php3
<?php_4
bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6 8 9<?php3
________12______4bool session_unset( void )5// Function to start session3 8// Function to start session5 <?php3
// Function to start session_8
Keluaran
Sebelum menggunakan fungsi session_unset(). Sebelum menggunakan fungsi sesi itu menampilkan nama dan email
<?php
// Function to start session
session_start();
session_start();_3
bool session_unset( void )1
bool session_unset( void )2bool session_unset( void )3bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6bool session_unset( void )7
________12______8echo <?php2<?php3
<?php_4
<?php5 <?php6
________12______8echo // Display the session id0<?php3
<?php_4
session_start();_3
echo bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6// Display the session id8<?php0<?php3
echo bool session_unset( void )4bool session_unset( void )5// Function to start session3// Display the session id8<?php0<?php3
// Function to start session_8
Keluaran
Setelah menggunakan fungsi session_unset(). Fungsi ini menghancurkan variabel seperti 'nama' dan 'email' yang digunakan
<?php
// Function to start session
session_start();
session_start();_3
bool session_unset( void )1
bool session_unset( void )2bool session_unset( void )3bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6bool session_unset( void )7
________12______8echo <?php2 <?php3
<?php_4
<?php5 <?php6
________12______8echo bool session_unset( void )11<?php3
<?php_4
echo bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6bool session_unset( void )19
echo bool session_unset( void )4bool session_unset( void )5// Function to start session3bool session_unset( void )19
bool session_unset( void )_26
bool session_unset( void )27
// Function to start session_8
Keluaran
fungsi session_destroy(). Itu menghancurkan seluruh sesi daripada menghancurkan variabel. Saat session_start() dipanggil, PHP menyetel cookie sesi di browser. Kami juga perlu menghapus cookie untuk menghancurkan sesi sepenuhnya
Contoh. Contoh ini digunakan untuk menghancurkan sesi
<?php
// Function to start session
session_start();
bool session_unset( void )1
bool session_unset( void )2bool session_unset( void )3bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6bool session_unset( void )7
________12______8echo <?php2<?php1<?php0 <?php3
<?php_4
<?php5 <?php6
________12______8echo 1<?php1<?php0<?php3
<?php_4
echo bool session_unset( void )4bool session_unset( void )5bool session_unset( void )6// Display the session id8<?php0<?php3
echo bool session_unset( void )4bool session_unset( void )5// Function to start session3// Display the session id8<?php0<?php3
bool session_unset( void )4 bool session_unset( void )75bool session_unset( void )76bool session_unset( void )77
bool session_unset( void )79
bool session_unset( void )80
bool session_unset( void )_81
bool session_unset( void )_82
bool session_unset( void )2 bool session_unset( void )84bool session_unset( void )85bool session_unset( void )84________12______87bool session_unset( void )88
________12______8bool session_unset( void )90 bool session_unset( void )91
________12______8bool session_unset( void )93bool session_unset( void )94bool session_unset( void )95
bool session_unset( void )96bool session_unset( void )90bool session_unset( void )5bool session_unset( void )99<?php00bool session_unset( void )90bool session_unset( void )5<?php03<?php00
bool session_unset( void )96bool session_unset( void )90bool session_unset( void )5<?php08<?php00bool session_unset( void )90bool session_unset( void )5<?php12<?php13
________12______8<?php15
<?php_4
<?php_18
<?php_19
// Function to start session_8
Keluaran
Pelaksanaan sesi. php Anda dapat melihat bahwa ada ID sesi yang berbeda itu berarti sesi sebelumnya telah dihancurkan dan semua variabel dan cookie juga dihancurkan. Karena semua variabel dihancurkan maka PHP pergi ke keluaran kondisi lain 'sesi dihancurkan'
Catatan. Jika diinginkan untuk mematikan sesi, hapus juga cookie sesi. Ini akan menghancurkan sesi, dan bukan hanya data sesi