Rumah >pembangunan bahagian belakang >tutorial php >Menulis pengendali sesi tersuai
Konsep Utama:
serialize()
) kekal sebagai kaedah pengendalian data lalai, tanpa mengira lokasi penyimpanan. unserialize()
session_set_save_handler()
SessionHandlerInterface
session.gc_probability
dalam session.gc_divisor
. php.ini
Memahami Penyimpanan Sesi Lalai:
Sebelum membuat pengendali tersuai, memahami tingkah laku lalai PHP. Data sesi disimpan dalam fail individu pada pelayan, masing -masing dihubungkan dengan ID unik (disimpan dalam cookie pelayar atau parameter URL). PHP menggunakan ID ini untuk mendapatkan data pada permintaan berikutnya.untuk mencari direktori data sesi:
<?php echo session_save_path(); ?>anda boleh menukar laluan ini dalam
atau menggunakan php.ini
. Menyimpan data sesi di luar direktori akar web meningkatkan keselamatan. session_save_path("/path/to/session/data");
) mengandungi data bersiri. Sebagai contoh, menyimpan session_id()
menghasilkan fail yang mengandungi: $_SESSION["colors"] = array("red", "blue");
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>Serialization ini konsisten walaupun dengan pengendali adat; Anda menukar
di mana data disimpan, bukan bagaimana ia dikendalikan.
kitaran hayat sesi dan : session_set_save_handler()
Membuka fail sesi dan memuatkan data ke dalam session_start()
. Data disimpan apabila skrip berakhir (atau melalui $_SESSION
). session_write_close()
membolehkan mengatasi ini dengan panggilan balik tersuai untuk: session_set_save_handler()
Setiap peringkat kitaran hayat memerlukan fungsi panggil balik berdaftar; Jika tidak, PHP mengeluarkan amaran. Panggilan balik boleh menjadi fungsi, penutupan, kaedah objek, atau kaedah kelas statik.
Membina pengendali tersuai (contoh mysql):
Contoh ini menggunakan pangkalan data MySQL untuk menyimpan data sesi. Jadual pangkalan data harus mempunyai bidang untuk ID Sesi, Data, dan Masa Akses Terakhir:
<?php echo session_save_path(); ?>
Fungsi berikut menunjukkan enam panggil balik, menggunakan PDO untuk interaksi pangkalan data:
<code>colors|a:2:{i:0;s:3:"red";i:1;s:4:"blue";}</code>
ingat untuk menggantikan kelayakan pangkalan data tempat dengan anda sendiri. Contoh ini menyediakan rangka asas; Pengendalian ralat dan interaksi pangkalan data yang lebih mantap perlu ditambah untuk kegunaan pengeluaran. Pengendalian data dalam read
dan write
boleh disesuaikan sesuai dengan keperluan khusus (mis., Data yang tidak dapat disimpan sebelum penyimpanan).
Kesimpulan:
Pengendali sesi tersuai menyediakan fleksibiliti dan kawalan ke atas pengurusan sesi. Artikel ini menunjukkan penyelesaian berasaskan MySQL; Prinsip yang sama berlaku untuk mekanisme penyimpanan yang lain. Ingatlah untuk mengendalikan siriisasi/deserialization dengan betul dan melaksanakan pengendalian ralat yang betul dan langkah -langkah keselamatan.
Atas ialah kandungan terperinci Menulis pengendali sesi tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!