File sesi biasanya disimpan di, misalnya, /tmp/
di server, dan dinamai sess_{session_id}
. Saya telah melihat isinya dan tidak tahu bagaimana cara kerjanya.
Mengambil nama variabel dan konten dari file itu mudah. Tetapi bagaimana PHP tahu sesi apa milik siapa?
The session_id tampaknya benar-benar acak dan satu alamat IP dapat memiliki beberapa pengguna, dan setiap pengguna dapat memiliki beberapa sesi jika mereka memiliki lebih dari satu jendela browser terbuka.
Jadi bagaimana cara kerjanya?
Jawaban:
Dalam situasi umum:
PHPSESSID
)Data dalam file sesi adalah konten
$_SESSION
, serial (yaitu, direpresentasikan sebagai string - dengan fungsi seperti cerita bersambung ) ; dan un-serialized saat file dimuat oleh PHP, untuk mengisi$_SESSION
array.Kadang-kadang, id sesi tidak disimpan dalam cookie, tetapi dikirim dalam URL juga - tapi itu sangat jarang, saat ini.
Untuk informasi lebih lanjut, Anda dapat melihat bagian Penanganan Sesi manual, yang memberikan beberapa informasi berguna.
Misalnya, ada halaman tentang Melewati ID Sesi , yang menjelaskan bagaimana id sesi diteruskan dari halaman ke halaman, menggunakan cookie, atau dalam URL - dan opsi konfigurasi mana yang memengaruhi ini.
sumber
Bagaimana Sesi PHP Bekerja
Pertama-tama PHP membuat angka pengidentifikasi unik panjang 16 byte (disimpan sebagai string dengan 32 karakter heksadesimal, misalnya
a86b10aeb5cd56434f8691799b1d9360
) untuk satu sesi.Cookie PHPSESSID meneruskan nomor identifikasi unik itu ke browser pengguna untuk menyimpan nomor itu.
File baru dibuat di server dengan nama nomor identifikasi unik yang sama dengan awalan sess_ (mis
sess_a86b10aeb5cd56434f8691799b1d9360
.)Browser mengirim cookie itu ke server dengan setiap permintaan.
Jika PHP mendapatkan nomor identifikasi unik dari cookie PHPSESSID (pada setiap permintaan), maka PHP mencari di direktori sementara dan membandingkan nomor itu dengan nama file. Jika keduanya sama, maka akan mengambil sesi yang ada, jika tidak, akan membuat sesi baru untuk pengguna tersebut.
Sesi hancur ketika pengguna menutup browser atau meninggalkan situs. Server juga mengakhiri sesi setelah periode waktu sesi yang ditentukan berakhir. Ini adalah langkah-langkah mekanisme sederhana yang digunakan PHP untuk menangani sesi. Saya harap artikel ini membantu Anda memahami cara kerja PHP SESSION.
Lihat artikel ini untuk lebih jelasnya. Bagaimana Sesi PHP Bekerja
sumber
mysite.com/cart
. Saya juga akan mendapatkan "Halo Joe Doe, 5 pesan, ini daftar keranjang belanja Anda ..." alias informasi sesi. - Tetapi mengapa browser mengenai tab kosong ini mengirimkan Session-ID bersama dengan GET-Request? pembaruan cepat: Ah, temukan jawabannya: +)ID sesi memang acak, dan diteruskan dalam cookie atau URL, tergantung pada konfigurasi. Anda mungkin sudah melihat PHPSESSID = xxxx ini di beberapa URL, ada cookie dengan nama itu juga.
sumber
Sesi dalam PHP dimulai dengan menggunakan fungsi session_start (). Seperti fungsi setcookie (), fungsi session_start () harus muncul sebelum HTML apa pun, termasuk baris kosong, di halaman. Ini akan terlihat seperti ini:
<?php session_start( );?><html><head>
....... dll. Fungsi session_start () menghasilkan Id Sesi acak dan menyimpannya dalam cookie di komputer pengguna (ini adalah satu-satunya informasi sesi yang sebenarnya disimpan di sisi klien. ) Nama default untuk cookie adalah PHPSESSID, meskipun ini dapat diubah dalam file konfigurasi PHP di server (namun sebagian besar perusahaan hosting akan membiarkannya sendiri.) Untuk referensi Id sesi dalam kode PHP Anda, karena itu Anda akan referensi variabel $ PHPSESSID (itu nama cookie; ingat itu dari Cookie?)sumber