Wie session_start () - Funktion funktioniert?
Bitte erklären, wie session_start()
Funktion arbeitet.
Verstehe ich nicht, die Reihenfolge der Aktionen beim Start einer session in php. Versuchen Sie zu erklären.
HTTP ist ein client – server-Architektur. Es bedeutet, dass der browser sendet eine Anfrage, der Server verarbeitet die Anfrage und sendet die Antwort. Jede dieser Maßnahmen hat eine entsprechende überschrift.
Habe ich überprüft (mit headers_list()
), welche Header gesendet werden, indem der server mit seiner Antwort, wenn ich möchte, eine Sitzung zu beginnen. Und unter anderem gibt es die header -
Set-Cookie: PHPSESSID=7f4cbf53fbcd4717792447f32da7dba8
Scheint es, dass alles ok ist, der server gibt, damit der browser das cookie.
Aber.Zu Beginn der Sitzung habe ich noch die session_start()
Funktion in der Anfang des Codes der Seite. Damit diese Funktion wird gestartet, wenn der browser beginnt das Parsen der Seite. Der browser erfüllt die php-opening-tag <?php
gefolgt von der session_start()
Funktion. Sofort delegiert er die Kontrolle an den server. Und der server nur jetzt startet die Funktion. Nur wenn es bereits an der Seite an den browser mit allen Headern.
Also ich verstehe nicht, wie der server senden kann Set-Cookie
header, bevor der browser beginnt mit dem Parsen der Seite und erfüllt die session_start()
Funktion? Wie weiß es, dass es an der Set-Cookie
header, bevor Sie den Befehl session_start()
ausgeführt wird? Oder ich missverstehen den Prozess?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werde ich Antwort durch die Verwendung von Apache als server.
Wenn eine Seite angefordert wird, um die server, Apache leitet Sie an den richtigen Dokument.
Wenn das bestimmten Dokumenttyp zugeordnet ist, SAPI -, Kontroll-verbannt wird, dass SAPI. Im Fall von PHP-Skripten, sind dies in der Regel PHP-Apache-Modul.
PHP dann ausgeführt wird, indem Sie die SAPI. Wenn Sie anrufen
session_start()
PHP ein paar Dinge:Es prüft, ob der client ein cookie gesendet benannt nach
session_name()
. Das cookie enthält die session-ID. Wenn es nicht vorhanden ist, schafft es mit einer neuen session-ID.Lädt er die session-Daten zugeordnet, die session-ID aus der session-Anbieter (der default-provider speichert die session-Daten in den temp-Ordner von Ihrem server als eine Datei mit serialisierten session-Daten) und stellt Sie in die
$_SESSION
super global.Registriert es einen shutdown-callback zum speichern der session-Daten zurück durch den Anbieter.
Dann wird Ihr Skript weiterhin die normale Ausführung Fluss, der Ausgang wird zurück an Apache an den client gesendet werden.
Sitzungen sind vollständig behandelt, indem die SAPI. Anderen als ihm die Kontrolle der SAPI, Apache, bringt nichts.
Den meisten PHP-Installationen haben output buffering auf, die speichert alle Ausgabe (Header und body) in einen Puffer, bis es geleert wird, um den Apache (entweder explizit durch
ob_flush()
oder implizit am Ende des Skripts).Wenn das output-buffering eingeschaltet ist, können Sie sich telefonisch
session_start()
überall vor dem ersten flush, da PHP Header senden, bevor der Körper.Im Falle einer neuen session (wenn der cookie gesendet wird), ist es egal, ob der client erhält die session-ID nur nach der Seite Durchführung: es werden es für die nächste Anfrage. Die session-ID ist der Schlüssel für die Wiederherstellung Ihrer session-Daten. Wenn jemand Stiehlt Ihre session-ID, und Sie müssen keine server-Soden-checks, wird Ihr session-Daten beeinträchtigt werden.
Für weitere Informationen, fühlen Sie sich frei zu Lesen eine andere meiner Antworten.
Grundsätzlich passiert das:
start_session
PHP ist eine serverseitige Sprache - es wird nicht analysiert, durch den browser, sondern von Ihrem web-server. Es sendet dann Header und Inhalt über HTTP (oder was auch immer andere Protokolle, die Sie verwenden können) an den browser.
So, in einem puristischen Sinn, der Aufruf der Funktion session_start() sagt dem web-server zu speichern eine kleine Datei mit einer session-id und der zugehörigen session-Daten (z.B. wenn Sie alles in $_SESSION) und senden Sie dann einen header an den client mit der session-id speichert diese in einem cookie. Dies bedeutet, dass der server zuordnen kann Informationen mit den einzelnen Besuchern.