Saat Anda bekerja dengan aplikasi, Anda membukanya, melakukan beberapa perubahan, lalu menutupnya. Ini sangat mirip dengan Sesi. Komputer tahu siapa Anda. Ia tahu kapan Anda memulai aplikasi dan kapan Anda mengakhiri. Tapi di internet ada satu masalah. server web tidak tahu siapa Anda atau apa yang Anda lakukan, karena alamat HTTP tidak mempertahankan status
Variabel sesi mengatasi masalah ini dengan menyimpan informasi pengguna untuk digunakan di beberapa halaman (mis. g. nama pengguna, warna favorit, dll). Secara default, variabel sesi bertahan hingga pengguna menutup browser
Jadi;
Tip. Jika Anda memerlukan penyimpanan permanen, Anda mungkin ingin menyimpan data dalam database
Mulai Sesi PHP
Sesi dimulai dengan fungsi session_start()
Variabel sesi diatur dengan variabel global PHP. $_SESSION
Sekarang, mari buat halaman baru bernama "demo_session1. php". Di halaman ini, kita memulai sesi PHP baru dan mengatur beberapa variabel sesi
Contoh
// Mulai sesi
session_start();
?>
// Tetapkan variabel sesi
$_SESSION["favcolor"] = "hijau";
$_SESSION["favanimal"] = "kucing";
echo "Variabel sesi ditetapkan. ";
?>
Catatan. Fungsi session_start()_ harus menjadi hal pertama dalam dokumen Anda. Sebelum tag HTML apa pun
Dapatkan Nilai Variabel Sesi PHP
Selanjutnya, kami membuat halaman lain yang disebut "demo_session2. php". Dari halaman ini, kami akan mengakses informasi sesi yang kami atur di halaman pertama ("demo_session1. php")
Perhatikan bahwa variabel sesi tidak diteruskan satu per satu ke setiap halaman baru, melainkan diambil dari sesi yang kita buka di awal setiap halaman (session_start())
Perhatikan juga bahwa semua nilai variabel sesi disimpan dalam variabel $_SESSION global
Contoh
session_start();
?>
// Gema variabel sesi yang diatur di halaman sebelumnya
gema "Warna favorit adalah". $_SESSION["favcolor"]. "
";
gema "Binatang favorit adalah". $_SESSION["favanimal"]. ". ";
?>
Cara lain untuk menampilkan semua nilai variabel sesi untuk sesi pengguna adalah dengan menjalankan kode berikut
Contoh
session_start();
?>
print_r($_SESSION);
?>
Bagaimana cara kerjanya?
Sebagian besar sesi menyetel kunci pengguna di komputer pengguna yang terlihat seperti ini. 765487cf34ert8dede5a562e4f3a7e12. Kemudian, ketika sebuah sesi dibuka di halaman lain, itu memindai komputer untuk kunci pengguna. Jika ada kecocokan, ia mengakses sesi itu, jika tidak, ia memulai sesi baru
Di PHP, kami menggunakan session_start() fungsi bawaan untuk memulai sesi. Tetapi masalah yang kita hadapi dalam skrip PHP adalah jika kita menjalankannya lebih dari sekali, itu akan menimbulkan kesalahan. Jadi di sini kita akan belajar bagaimana memeriksa sesi dimulai atau tidak tanpa memanggil fungsi session_start() dua kali
Ada dua cara untuk diikuti untuk mengatasi masalah ini
Untuk di bawah PHP5. 4. 0 versi
Contoh
Penjelasan
Jika sesi tidak dimulai, kode di atas akan selalu memulai sesi dalam skrip PHP
Dalam metode kedua, kita dapat menggunakan fungsi session_status(), yang mengembalikan status sesi saat ini. Fungsi ini dapat mengembalikan tiga nilai bilangan bulat, yang semuanya merupakan konstanta yang telah ditentukan sebelumnya. Ini adalah
- 0 – PHP_SESSION_DISABLED. Sesi saat ini dinonaktifkan
- 1 – PHP_SESSION_NONE. Sesi diaktifkan, tetapi tidak ada sesi yang dimulai
- 2 – PHP_SESSION_AKTIF. Sesi diaktifkan dan sesi telah dimulai
Contoh
Penjelasan
Kode di atas memeriksa apakah sesi dimulai atau tidak, jika tidak dimulai, ini akan memulai sesi dalam skrip PHP
Meskipun solusinya tampaknya cukup mudah (jangan menyebutnya lebih dari sekali), dalam skenario tertentu, Anda tidak akan sepenuhnya yakin apakah suatu sesi telah dimulai atau belum. Dalam beberapa kasus, itu mungkin di luar kendali Anda
Ada dua cara untuk mendekati ini
Memeriksa untuk melihat apakah ada sesi dalam versi yang lebih rendah dari 5. 4
Jika Anda menggunakan versi PHP yang lebih rendah dari 5. 4. 0, Anda dapat melakukan hal berikut
<?php if(session_id() == ''){ //session has not started session_start(); } var_dump(session_id());Jika Anda menjalankan kode di atas, Anda akan melihat bahwa sesi selalu ada
hal ini dikarenakan
- Kami memeriksa untuk melihat apakah fungsi session_id mengembalikan string kosong
- Jika fungsi session_id mengembalikan string kosong, maka kita dapat menganggap bahwa sesi tidak ada
- Jika demikian, kita cukup memulai sesi dengan memanggil fungsi session_start
Menggunakan fungsi session_status di PHP 5. 4 dan di atas
Dalam PHP versi 5. 4. 0 ke atas, kita dapat menggunakan fungsi session_status. Seperti namanya, fungsi ini mengembalikan status sesi saat ini
Fungsi ini dapat mengembalikan tiga nilai bilangan bulat yang berbeda, yang semuanya tersedia sebagai konstanta yang telah ditentukan sebelumnya
- 0 – PHP_SESSION_DISABLED. Sesi saat ini dinonaktifkan
- 1 – PHP_SESSION_NONE. Tidak ada sesi
- 2 – PHP_SESSION_AKTIF. Sesi sudah ada
Jika kami menggunakan session_status, kode kami akan terlihat seperti ini
if(session_status() == PHP_SESSION_NONE){ //session has not started session_start(); }_Seperti yang Anda lihat, menggunakan fungsi ini membuat kode Anda sedikit lebih jelas
Mengapa tidak memeriksa saja apakah array $_SESSION kosong?
Anda dapat memeriksa untuk melihat apakah array $_SESSION ada dan tidak kosong. Namun, perlu dicatat bahwa $_SESSION dapat dibuat secara manual seperti itu