Warum kann ich setcookie
ohne Vorbereitung verwenden, während eine session_start()
vor der Verwendung $_SESSION
benötigen? Und ich denke, funktioniert, die sie tun, sind ähnlich.Warum session_start ist bei der Verwendung der Sitzung erforderlich?
Antwort
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.
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
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.
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.
- 1. Best Practice bei der Verwendung von WebMethods und Sitzung
- 2. Bei Verwendung von: =, warum ist mit = TRUE der Standardwert?
- 3. Warum kein Überlauf bei Verwendung der Doppelvariablen?
- 4. Ist Wait() nach der Verwendung von Task.Factory.StartNew() erforderlich?
- 5. PHP session_start ist
- 6. PHP session_start()
- 7. Warum der App Absturz bei der Verwendung von CAGradientLayer
- 8. Warum hängt die Anwendung bei der Verwendung der Substring-Methode?
- 9. Warum ist Kategorie HOME erforderlich?
- 10. Der Bildspeicherort ist bei der Verwendung von PHP nicht geladen
- 11. Omnipay: Der Quellparameter ist erforderlich
- 12. Timing-Ereignisse bei Beendigung der Sitzung
- 13. Was ist der Nachteil bei der Verwendung von asp.net MVC?
- 14. php session_start() Warnung
- 15. Was ist der Zweck der WCF-Sitzung?
- 16. Warum ist Zero Padding in Sockaddr_in erforderlich?
- 17. Warum ist der statische Modifikator in diesem Code erforderlich?
- 18. Warum ist 'this' bei der Verwendung von Versprechungen innerhalb der Klassenmethode undefiniert?
- 19. Warum ist copy_to/from_user erforderlich?
- 20. ASP.NET 5/MVC 6, Verwendung der Sitzung in der Klassenbibliothek?
- 21. Fehler bei der Verwendung der IF-Anweisung
- 22. Fehler bei der Verwendung der Funktion "solvePnPRansac"
- 23. Fehler bei der Verwendung der Aktualisierungsabfrage
- 24. System.ArgumentNullException bei der Verwendung IncludeThen
- 25. Warum hängt PHP gelegentlich auf session_start()
- 26. sqlalchemy: ist Rollback bei jedem Commit erforderlich?
- 27. Warum kommt Magento immer aus der Sitzung
- 28. Warum wird 'this' bei der Verwendung mit Funktionsobjekten anders behandelt?
- 29. Was ist los mit der Verwendung von Identity Monad mit mmultP bei der Verwendung von Repa?
- 30. leere Seite bei der Verwendung der Verwendung Schlüsselwort in PHP
Ich habe es. Danke für die Qualität Antworten. – Young