Apakah $_SESSIONvariabel disimpan di klien atau server?
Apakah $_SESSIONvariabel disimpan di klien atau server?
Jawaban:
Lokasi $_SESSIONpenyimpanan variabel ditentukan oleh session.save_pathkonfigurasi PHP . Biasanya ini ada /tmpdi sistem Linux / Unix. Gunakan phpinfo()fungsi ini untuk melihat pengaturan khusus Anda jika tidak 100% yakin dengan membuat file dengan konten ini diDocumentRoot domain Anda:
<?php
phpinfo();
?>
Berikut ini tautan ke dokumentasi PHP tentang pengaturan konfigurasi ini:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Seperti yang sudah disebutkan, konten disimpan di server. Namun sesi diidentifikasi oleh id sesi, yang disimpan di klien dan dikirim dengan setiap permintaan. Biasanya id sesi disimpan dalam cookie, tetapi juga dapat ditambahkan ke url. (Itulah PHPSESSIDparameter-kueri yang beberapa kali Anda lihat)
Biasanya disimpan di server. Di mana mereka disimpan terserah Anda sebagai pengembang. Anda dapat menggunakan session.save_handlervariabel konfigurasi dan session_set_save_handleruntuk mengontrol bagaimana sesi disimpan di server. Metode penyimpanan default adalah menyimpan sesi ke file. Di mana mereka diselamatkan dikendalikan oleh session.save_pathvariabel.
Satu tambahan: Perlu dicatat bahwa, jika "/ tmp" adalah direktori tempat data sesi disimpan (yang tampaknya merupakan nilai default), sesi tidak akan bertahan setelah reboot server web itu, karena "/ tmp "Sering dibersihkan saat reboot. Konsep kegigihan klien-bijaksana berdiri dan jatuh dengan kegigihan penyimpanan di server - yang mungkin gagal jika direktori "/ tmp" digunakan untuk data sesi.
Saya menggunakan Ubuntu dan sesi saya disimpan di / var / lib / php5.
Seperti yang ditunjukkan oleh Mr. Taylor, ini biasanya diatur dalam php.ini. Biasanya mereka disimpan sebagai file di direktori tertentu.
Untuk ubuntu 16.10 adalah sesi simpan di / var / lib / php / session / ...
Bagaimana cara kerjanya? Bagaimana dia tahu ini aku?
Sebagian besar sesi menetapkan kunci pengguna (disebut sessionid) pada komputer pengguna yang terlihat seperti ini: 765487cf34ert8dede5a562e4f3a7e12. Kemudian, ketika sebuah sesi dibuka di halaman lain, itu memindai komputer untuk kunci-pengguna dan berjalan ke server untuk mendapatkan variabel Anda.
Jika Anda salah menghapus cache, maka kunci pengguna Anda juga akan dihapus. Anda tidak akan bisa mendapatkan variabel lagi dari server karena Anda tidak tahu id Anda.
Dalam sesi mesin Ubuntu saya disimpan di
/var/lib/php/sessions
dan Anda harus sudo lsdalam direktori ini hanya lsakan membuangnya
ls: tidak dapat membuka direktori '.': Izin ditolak
Dan pada sesi php server Windows Wamp saya disimpan di
C:\wamp64\tmp
dan jika Anda menginstal php mandiri di windows maka tidak ada nilai yang ditetapkan secara default
session.save_path => no value => no value
Banyak jawaban di atas tidak jelas. Menurut pendapat saya penulis pertanyaan ini hanya ingin tahu di mana variabel sesi disimpan secara default. Menurut ini: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions, mereka secara sederhana disimpan di server secara default . Semoga kontribusi orang lain bermanfaat.