Di mana variabel $ _SESSION disimpan?


158

Apakah $_SESSIONvariabel disimpan di klien atau server?


di server tempat Anda menjalankan aplikasi php, untuk jalur tertentu Anda harus memeriksa dengan phpinfo ()
densityx

Jawaban:


168

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


129

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)


41
+1 karena Anda telah menyiratkan bahwa cookie tidak menyimpan konten $ _SESSION (konten ini disimpan di server, jadi tidak rentan terhadap modifikasi oleh klien)
shufler

12
Jawaban yang sangat bagus! Saya mencari pertanyaan: "Mengapa sesi kedaluwarsa setelah menghapus cache browser?". Dan Anda menyelamatkan hari saya.
Murid

2
server membuat file sess_7nu9p0fvidvva6ouaugqcc8292 dan pada peringatan browser (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1 - Untuk menjawab pertanyaan: "... disimpan pada klien atau server?"
Alex Vargas

22

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.


18

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.


13

Pada Debian (bukankah ini kasus untuk sebagian besar distro Linux?), Disimpan di / var / lib / php5 /. Seperti disebutkan di atas, ini dikonfigurasi di php.ini Anda.


12

Saya menggunakan Ubuntu dan sesi saya disimpan di / var / lib / php5.


1
Terima kasih, itu saja yang saya inginkan. Ya, jika mereka tidak berada di tempat yang biasa, saya harus membuka INI, tetapi saya hanya ingin tahu "Hei, di mana sesi biasanya disimpan?" / var / lib / php / sesi / itu.
Eric L.

7

Seperti yang ditunjukkan oleh Mr. Taylor, ini biasanya diatur dalam php.ini. Biasanya mereka disimpan sebagai file di direktori tertentu.



0

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.


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.