PHP : Sessions

Meskipun kalian dapat menyimpan data menggunakan cookie tetapi hal itu 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 kalian yang dapat merusak aplikasi kalian.

Juga setiap kali browser meminta URL ke server, semua data cookie untuk situs web secara otomatis dikirim ke server sesuai permintaan. Ini berarti jika kalian telah menyimpan 5 cookie pada sistem pengguna, masing-masing berukuran 4KB, browser perlu mengunggah 20KB data setiap kali pengguna melihat halaman, yang dapat memengaruhi kinerja situs kalian.

Kalian bisa menyelesaikan kedua masalah ini dengan menggunakan session PHP. Session PHP menyimpan data di server. Dalam suasana berbasis session, setiap pengguna diidentifikasi melalui nomor unik yang disebut pengidentifikasi session atau SID. ID session unik ini digunakan untuk menghubungkan setiap pengguna dengan informasi mereka sendiri di server seperti email, posting, dll.

Memulai PHP Session

Sebelum kalian dapat menyimpan informasi dalam variabel session, kalian harus terlebih dahulu memulai session. Untuk memulai sesi baru, cukup panggil fungsi PHP session_start(). Ini akan membuat sesi baru dan menghasilkan ID sesi unik untuk pengguna.

Kode PHP dalam contoh di bawah ini hanya memulai sesi baru.

<?php
// Starting session
session_start();
?>

Fungsi session_start() pertama kali akan memeriksa untuk melihat apakah sesi sudah ada dengan mencari ID sesi. Jika menemukan satu, yaitu jika sesi sudah dimulai, ia akan mengatur variabel sesi dan jika tidak, ia akan memulai sesi baru dengan membuat ID sesi baru.

Storing dan Accessing Session Data

Kalian dapat menyimpan semua data sesi kalian sebagai pasangan nilai kunci dalam array superglobal $_SESSION[]. Data yang disimpan dapat diakses selama sesi berlangsung. Pertimbangkan skrip berikut, yang membuat sesi baru dan mendaftarkan dua variabel sesi.

<?php
// Starting session
session_start();
 
// Storing session data
$_SESSION["firstname"] = "Peter";
$_SESSION["lastname"] = "Parker";
?>

Untuk mengakses data sesi yang kita atur pada contoh sebelumnya dari halaman lain pada domain web yang sama —– cukup buat ulang sesi dengan memanggil session_start() dan kemudian berikan kunci yang sesuai ke array asosiatif $_SESSION.

<?php
// Starting session
session_start();
 
// Accessing session data
echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

Kode PHP dalam contoh di atas menghasilkan output berikut.

Destroying Session

Jika kalian ingin menghapus data sesi tertentu, cukup setel kunci terkait dari array asosiatif $_SESSION, seperti yang ditunjukkan dalam contoh berikut:

<?php
// Starting session
session_start();
 
// Removing session data
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

Namun, untuk menghancurkan sesi sepenuhnya, cukup panggil fungsi session_destroy(). Fungsi ini tidak memerlukan argumen dan panggilan tunggal untuk menghancurkan semua data sesi.

<?php
// Starting session
session_start();
 
// Destroying session
session_destroy();
?>

Setiap sesi PHP memiliki nilai batas waktu —– durasi, diukur dalam detik —– yang menentukan berapa lama sesi harus tetap hidup tanpa adanya aktivitas pengguna. Kalian dapat menyesuaikan durasi batas waktu ini dengan mengubah nilai variabel session.gc_maxlifetime dalam file konfigurasi PHP ( php.ini ).