Werden $_SESSIONVariablen auf dem Client oder dem Server gespeichert?
Werden $_SESSIONVariablen auf dem Client oder dem Server gespeichert?
Antworten:
Der Speicherort des $_SESSIONvariablen Speichers wird durch die session.save_pathKonfiguration von PHP bestimmt . Normalerweise ist dies /tmpauf einem Linux / Unix-System. Verwenden Sie die phpinfo()Funktion, um Ihre speziellen Einstellungen anzuzeigen, wenn Sie nicht 100% sicher sind, indem Sie eine Datei mit diesem Inhalt in DocumentRootIhrer Domain erstellen :
<?php
phpinfo();
?>
Hier ist der Link zur PHP-Dokumentation zu dieser Konfigurationseinstellung:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Wie bereits erwähnt, werden die Inhalte auf dem Server gespeichert. Die Sitzung wird jedoch durch eine Sitzungs-ID identifiziert, die auf dem Client gespeichert und bei jeder Anforderung gesendet wird. Normalerweise wird die Sitzungs-ID in einem Cookie gespeichert, sie kann jedoch auch an URLs angehängt werden. (Das ist der PHPSESSIDAbfrageparameter, den Sie manchmal sehen)
Sie werden normalerweise auf dem Server gespeichert. Wo sie gespeichert sind, liegt bei Ihnen als Entwickler. Mit der session.save_handlerKonfigurationsvariablen und können Sie session_set_save_handlersteuern, wie Sitzungen auf dem Server gespeichert werden. Die Standard-Speichermethode ist das Speichern von Sitzungen in Dateien. Wo sie gespeichert werden, wird von der session.save_pathVariablen gesteuert .
Ein Zusatz: Es sollte beachtet werden, dass, falls "/ tmp" das Verzeichnis ist, in dem die Sitzungsdaten gespeichert sind (was der Standardwert zu sein scheint), die Sitzungen nach dem Neustart dieses Webservers nicht als "/ tmp" bestehen bleiben "wird beim Neustart häufig gelöscht. Das Konzept einer clientweisen Persistenz steht und fällt mit der Persistenz des Speichers auf dem Server - was fehlschlagen kann, wenn das Verzeichnis "/ tmp" für Sitzungsdaten verwendet wird.
Ich benutze Ubuntu und meine Sitzungen sind in / var / lib / php5 gespeichert.
Wie Mr. Taylor betonte, wird dies normalerweise in php.ini eingestellt. Normalerweise werden sie als Dateien in einem bestimmten Verzeichnis gespeichert.
Für Ubuntu 16.10 werden Sitzungen in / var / lib / php / session / ... gespeichert.
Wie funktioniert es? Woher weiß es, dass ich es bin?
In den meisten Sitzungen wird auf dem Computer des Benutzers ein Benutzerschlüssel (als Sitzungs-ID bezeichnet) festgelegt, der ungefähr so aussieht: 765487cf34ert8dede5a562e4f3a7e12. Wenn eine Sitzung auf einer anderen Seite geöffnet wird, durchsucht sie den Computer nach einem Benutzerschlüssel und wird zum Server ausgeführt, um Ihre Variablen abzurufen.
Wenn Sie versehentlich den Cache leeren, wird auch Ihr Benutzerschlüssel gelöscht. Sie können Ihre Variablen nicht mehr vom Server abrufen, da Sie Ihre ID nicht kennen.
In meiner Ubuntu-Maschine werden Sitzungen bei gespeichert
/var/lib/php/sessions
und du musst sudo lsin dieses Verzeichnis nur lswerfen
ls: Verzeichnis '.' kann nicht geöffnet werden. Berechtigung verweigert
Und auf meinem Windows Wamp Server werden PHP-Sitzungen in gespeichert
C:\wamp64\tmp
und wenn Sie eigenständiges PHP unter Windows installieren, ist standardmäßig kein Wert festgelegt
session.save_path => no value => no value
Viele der obigen Antworten sind undurchsichtig. Meiner Meinung nach möchte der Autor dieser Frage nur wissen, wo Sitzungsvariablen standardmäßig gespeichert sind. Demnach: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions werden sie einfach standardmäßig auf dem Server gespeichert . Hoffentlich finden andere diesen Beitrag sinnvoll.