Are $_SESSIONdeğişkenler istemci veya sunucuda depolanan?
Are $_SESSIONdeğişkenler istemci veya sunucuda depolanan?
Yanıtlar:
$_SESSIONDeğişken depolamanın konumu PHP'nin session.save_pathyapılandırması tarafından belirlenir . Genellikle bu /tmpbir Linux / Unix sistemindedir. Alan adınızda phpinfo()bu içeriğe sahip bir dosya oluşturarak% 100 emin değilseniz belirli ayarlarınızı görüntülemek için bu işlevi kullanın DocumentRoot:
<?php
phpinfo();
?>
Bu yapılandırma ayarındaki PHP belgelerine bağlantı:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Daha önce de belirtildiği gibi, içerikler sunucuda saklanır. Ancak oturum, istemcide depolanan ve her istekle gönderilen bir oturum kimliği ile tanımlanır. Genellikle oturum kimliği bir çerezde saklanır, ancak URL'lere de eklenebilir. (Bu, PHPSESSIDbirkaç kez gördüğünüz sorgu parametresidir)
Genellikle sunucuda depolanırlar. Depolandıkları yer geliştirici olarak size kalmış. Oturumların sunucuya nasıl kaydedileceğini denetlemek için session.save_handleryapılandırma değişkenini ve simgesini kullanabilirsiniz session_set_save_handler. Varsayılan kaydetme yöntemi, oturumları dosyalara kaydetmektir. Kaydedildikleri yer session.save_pathdeğişken tarafından kontrol edilir .
Bir ek: Unutulmamalıdır ki, "/ tmp" oturum verilerinin saklandığı dizin ise (varsayılan değer gibi görünür), oturumlar söz konusu web sunucusunun yeniden başlatılmasından sonra "/ tmp" olarak devam etmez "genellikle yeniden başlatma sırasında temizlenir. İstemci açısından kalıcılık kavramı, sunucudaki depolamanın kalıcılığıyla birlikte durur ve oturum verileri için "/ tmp" dizini kullanılırsa başarısız olabilir.
Ubuntu kullanıyorum ve oturumlarım / var / lib / php5 içinde saklanıyor.
Bay Taylor'ın işaret ettiği gibi, bu genellikle php.ini'de ayarlanır. Genellikle belirli bir dizinde dosya olarak saklanırlar.
Ubuntu 16.10 için oturumlar / var / lib / php / session / ... dizinine kaydedilir.
O nasıl çalışır? Benim olduğumu nereden biliyor?
Çoğu oturum, kullanıcının bilgisayarında şuna benzeyen bir kullanıcı anahtarı (oturum kimliği olarak adlandırılır) ayarlar: 765487cf34ert8dede5a562e4f3a7e12. Ardından, bir oturum başka bir sayfada açıldığında, bilgisayarı bir kullanıcı anahtarı için tarar ve değişkenlerinizi almak için sunucuya çalışır.
Önbelleği yanlışlıkla temizlerseniz, kullanıcı anahtarınız da silinir. Kimliğinizi bilmediğiniz için değişkenlerinizi artık sunucudan alamazsınız.
Ubuntu makine oturumlarımda
/var/lib/php/sessions
ve sudo lsbu dizinde sadece lso atacak
ls: 'dizinini açamıyor.': İzin verilmedi
Ve Windows Wamp sunucumda php oturumları
C:\wamp64\tmp
ve pencerelere bağımsız php yüklerseniz, varsayılan olarak ayarlanmış bir değer yoktur
session.save_path => no value => no value
Yukarıdaki cevapların çoğu opaktır. Bence bu sorunun yazarı, oturum değişkenlerinin varsayılan olarak nerede depolandığını bilmek istiyor. Buna göre: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions basitçe olan varsayılan olarak sunucuda depolanan . Umarım, diğerleri bu katkıyı anlamlı bulacaktır.