2010-03-17 7 views

Antwort

11

Da setcookie()ein Cookie definiert, das zusammen mit den restlichen HTTP-Headern gesendet wird. Das ist eine ganz andere Sache als das, was session_start() tut, z.B. Erstellen einer Sitzung oder Fortsetzen der aktuellen Sitzung basierend auf einer Sitzungskennung, die über eine GET- oder POST-Anforderung übergeben oder über einen Cookie übergeben wurde.

Die erste kommt noch hinzu, etwas an den Header und sendet sie - den Browser, während die andere die Session ID von $ _COOKIEs oder $ _GET oder $ _POST bekommen und versucht dann, die Session-Datei in den session_save_path finden Wenn Sie die Werte in $ _SESSION entserialisiert haben und falls nicht, erstellen Sie eine neue Sitzung, wahrscheinlich unter Verwendung von setcookie, um die Sitzungs-ID festzulegen.

Siehe chapter on Sessions in the PHP Manual.


bearbeiten Wie @Felix richtig unten weist darauf hin, wird die Sitzung nicht unbedingt in einer Datei gespeichert. Es ist nicht so wichtig, denn das Argument bleibt gleich: session_start findet und initialisiert Ihre Sitzungsdaten, während setcookie nur tut, was der Name impliziert.

+0

Ich habe es. Danke für die Qualität Antworten. – Young

1

Zur Erklärung siehe die Antwort vor mir. Wenn Sie diese Einstellung in der php.ini einen Blick einfach nicht wollen, haben die start_session() Funktion aufzurufen: session.auto_start

1

Die Sitzungsdaten in einer Datei nicht unbedingt gespeichert ist, als Gordon sagt. Mit session_set_save_handler() können Sie ein eigenes Backend definieren, das die Werte speichern soll, z. in einer Datenbank.

Alle diese Daten abrufen wird mit session_start() behandelt. Auf diese Weise können Sie Ihr Backend einfach ändern, ohne Ihre Anwendung zu unterbrechen.

Hinweis: Dies ist nur ein Grund für session_start(), und wieder viel mehr als nur das Setzen von Cookies.

0

Die Sitzungsdaten werden nicht unbedingt in einer Datei gespeichert, wie Gordon sagt. Mit session_set_save_handler() können Sie Ihr eigenes Backend definieren, das die Werte speichern soll, z. in einer Datenbank.

Alle diese Daten abrufen wird mit session_start() behandelt. Auf diese Weise können Sie Ihr Backend einfach ändern, ohne Ihre Anwendung zu unterbrechen.

Hinweis: Dies ist nur ein Grund für session_start(), und wieder viel mehr als nur das Setzen von Cookies.

Verwandte Themen