กำลัง$_SESSION
ตัวแปรที่เก็บไว้ในไคลเอ็นต์หรือเซิร์ฟเวอร์หรือไม่
กำลัง$_SESSION
ตัวแปรที่เก็บไว้ในไคลเอ็นต์หรือเซิร์ฟเวอร์หรือไม่
คำตอบ:
ตำแหน่งของที่$_SESSION
เก็บตัวแปรถูกกำหนดโดยการsession.save_path
กำหนดค่าของ PHP โดยปกติจะ/tmp
ใช้ระบบ Linux / Unix ใช้phpinfo()
ฟังก์ชั่นเพื่อดูการตั้งค่าเฉพาะของคุณหากไม่แน่ใจ 100% ด้วยการสร้างไฟล์ที่มีเนื้อหานี้ในDocumentRoot
โดเมนของคุณ:
<?php
phpinfo();
?>
นี่คือลิงค์ไปยังเอกสาร PHP ในการตั้งค่าการกำหนดค่านี้:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
ดังกล่าวแล้วเนื้อหาจะถูกเก็บไว้ที่เซิร์ฟเวอร์ อย่างไรก็ตามเซสชั่นจะถูกระบุโดย session-id ซึ่งเก็บไว้ที่ลูกค้าและส่งพร้อมกับคำขอแต่ละครั้ง โดยปกติแล้ว session-id จะถูกเก็บไว้ในคุกกี้ แต่ก็สามารถผนวกเข้ากับ URL ได้ (นั่นคือPHPSESSID
พารามิเตอร์ข้อความค้นหาที่คุณเห็น)
โดยทั่วไปจะเก็บไว้ในเซิร์ฟเวอร์ ที่เก็บของพวกเขานั้นขึ้นอยู่กับคุณในฐานะนักพัฒนา คุณสามารถใช้session.save_handler
ตัวแปรการกำหนดค่าและsession_set_save_handler
เพื่อควบคุมวิธีการบันทึกเซสชันบนเซิร์ฟเวอร์ วิธีการบันทึกเริ่มต้นคือการบันทึกเซสชันไปยังไฟล์ ที่ที่พวกเขาได้รับการบันทึกจะถูกควบคุมโดยsession.save_path
ตัวแปร
สิ่งที่เพิ่มเติม: ควรสังเกตว่าในกรณี "/ tmp" เป็นไดเรกทอรีที่เก็บข้อมูลเซสชัน (ซึ่งดูเหมือนว่าจะเป็นค่าเริ่มต้น) เซสชันจะไม่คงอยู่หลังจากรีบูตเว็บเซิร์ฟเวอร์นั้นเป็น "/ tmp" "มักจะถูกล้างระหว่างรีบูต แนวคิดของการติดตาลูกค้าฉลาดยืนและตกอยู่กับการเก็บข้อมูลบนเซิร์ฟเวอร์ - ซึ่งอาจล้มเหลวหากใช้ไดเรกทอรี "/ tmp" สำหรับข้อมูลเซสชัน
บน Debian (ไม่ใช่กรณีนี้สำหรับ distros Linux ส่วนใหญ่ใช่หรือไม่) จะถูกบันทึกใน / var / lib / php5 / ดังกล่าวข้างต้นมันกำหนดค่าใน php.ini ของคุณ
ฉันใช้ Ubuntu และเซสชันของฉันถูกเก็บไว้ใน / var / lib / php5
ดังที่นายเทย์เลอร์ชี้ให้เห็นว่าสิ่งนี้มักจะเกิดขึ้นใน php.ini โดยปกติจะจัดเก็บเป็นไฟล์ในไดเรกทอรีเฉพาะ
สำหรับ Ubuntu 16.10 เป็นช่วงที่บันทึกใน / var / lib / php / session / ...
มันทำงานยังไง? รู้ได้อย่างไรว่าเป็นฉัน
เซสชันส่วนใหญ่ตั้งค่ารหัสผู้ใช้ (เรียกว่า sessionid) บนคอมพิวเตอร์ของผู้ใช้ที่มีลักษณะดังนี้: 765487cf34ert8dede5a562e4f3a7e12 จากนั้นเมื่อเปิดเซสชันในหน้าอื่นมันจะสแกนคอมพิวเตอร์เพื่อหารหัสผู้ใช้และเรียกใช้ไปยังเซิร์ฟเวอร์เพื่อรับตัวแปรของคุณ
หากคุณล้างแคชโดยไม่ตั้งใจแล้วรหัสผู้ใช้ของคุณจะถูกล้างออกด้วย คุณจะไม่สามารถรับตัวแปรจากเซิร์ฟเวอร์ได้อีกต่อไปเนื่องจากคุณไม่ทราบรหัสของคุณ
ในเซสชัน Ubuntu ของฉันจะถูกเก็บไว้ที่
/var/lib/php/sessions
และคุณต้องทำsudo ls
ในไดเรกทอรีนี้เท่านั้นที่ls
จะโยน
ls: ไม่สามารถเปิดไดเรกทอรี '.': ปฏิเสธการอนุญาต
และในเซสชัน php เซิร์ฟเวอร์ Windows Wamp ของฉันจะถูกเก็บไว้
C:\wamp64\tmp
และถ้าคุณติดตั้ง php แบบสแตนด์อโลนบน windows ดังนั้นจะไม่มีการตั้งค่าตามค่าเริ่มต้น
session.save_path => no value => no value
คำตอบหลายข้อข้างต้นเป็นแบบทึบ ในความคิดของฉันผู้เขียนคำถามนี้เพียงต้องการทราบว่าตัวแปรเซสชันถูกเก็บไว้โดยค่าเริ่มต้น ตามนี้: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessionsพวกเขาจะเป็นเพียงการเก็บไว้ในเซิร์ฟเวอร์โดยค่าเริ่มต้น หวังว่าคนอื่นจะพบว่าการบริจาคนี้มีความหมาย