por qué puedo utilizar setcookie
sin ninguna preparación, mientras que necesitará un session_start()
antes de usar $_SESSION
? Y creo que obras hacen son similares.¿Por qué session_start es necesario cuando se usa la sesión?
Respuesta
Porque setcookie()define una cookie que se enviará junto con el resto de los encabezados HTTP. Eso es algo completamente diferente de lo que hace session_start(), p. crear una sesión o reanudar la actual basada en un identificador de sesión pasado a través de una solicitud GET o POST, o pasado a través de una cookie.
La primera simplemente añade algo a la cabecera y lo envía a el navegador, mientras que el otro recibe el ID de sesión de $ _COOKIEs o $ _GET o $ _POST y luego intenta encontrar el archivo de sesión en el session_save_path y cuando se encuentra deserializando los valores de esto en $ _SESSION y si no, cree una nueva sesión, probablemente utilizando setcookie
en el proceso para establecer el ID de la sesión.
Véase el chapter on Sessions in the PHP Manual.
Editar Como @Felix correctamente señala más adelante, la sesión no necesariamente se guarda en un archivo. Sin embargo, no es tan importante, porque el argumento sigue siendo el mismo: session_start
encontrará e (re) inicializará los datos de su sesión, mientras que setcookie
hace lo que su nombre implica.
véanse las notas explicativas de la respuesta antes que la mía. Si sólo no quiere llamar a la función start_session() echar un vistazo a esta configuración en el php.ini: session.auto_start
los datos de sesión no necesariamente se almacenan en un archivo como dice Gordon. Con session_set_save_handler()
puede definir su propio back-end que debe almacenar los valores, p. en una base de datos
Todo esto recuperación de datos se maneja con session_start()
. De esta forma, puede cambiar fácilmente su programa de fondo sin interrumpir su aplicación.
Nota: Esta es sólo una razón para session_start()
, y de nuevo lo hace mucho más que sólo la creación de las cookies.
Los datos de la sesión no se almacenan necesariamente en un archivo como dice Gordon. Con session_set_save_handler()
puede definir su propio back-end que debe almacenar los valores, p. en una base de datos
Todo esto recuperación de datos se maneja con session_start()
. De esta manera puede cambiar fácilmente su back-end sin romper su aplicación.
Nota: Esta es sólo una razón para session_start()
, y de nuevo lo hace mucho más que sólo la creación de las cookies.
- 1. ¿Qué es LiteralControl? ¿Por qué se usa?
- 2. C - Si se usa Realloc, ¿es necesario?
- 3. ¿Por qué session_ destroy() es necesario?
- 4. ¿Por qué https solo se usa para iniciar sesión?
- 5. vhost.exe. ¿Por qué es eso necesario?
- 6. ¿Por qué es necesario "fork" por socat cuando se conecta a un servidor web?
- 7. ¿Por qué se abandona el sbt cuando se usa pescado?
- 8. ¿Por qué es necesario el método DataBind()?
- 9. PHP session_start()
- 10. TreeSet internamente usa TreeMap, entonces ¿es necesario implementar el método Hashcode cuando usa Treeset
- 11. ¿Por qué es necesario un segundo cin.ignore()?
- 12. Python: ¿Por qué es necesario functools.partial?
- 13. ¿Por qué es necesario SSLCertificateKeyFile para Apache?
- 14. ¿Por qué es necesario el botón guardar?
- 15. ¿Por qué es necesario cerrar File.Create?
- 16. ¿Es realmente necesario implementar un Repositorio cuando se usa Entity Framework?
- 17. PHP Save Session cuando se usa session_write_close();
- 18. Gran número de Session_Start con la misma ID de sesión
- 19. ¿Qué es un "lote" y por qué se usa GO?
- 20. C - ¿Por qué strcpy() es necesario?
- 21. ¿Por qué DrawImageUnscaled causa parpadeo cuando se usa desde WM_NCPAINT?
- 22. ¿Cuándo/por qué prefijar variables con "$" cuando se usa jQuery?
- 23. ¿Cómo se permite a NHibernate reintentar transacciones bloqueadas cuando se usa sesión por solicitud?
- 24. ¿Es necesario realizar lecturas de datos centrales dentro de performBlock cuando se usa NSMainQueueConcurrencyType?
- 25. ¿Qué causa realmente que se llame a Session_Start?
- 26. ¿por qué se usa osgi?
- 27. ¿Por qué se usa suhosin?
- 28. ¿Por qué Enum.GetValues () devuelve nombres cuando se usa "var"?
- 29. ¿Por qué ya no es necesario indicar ByVal/ByRef?
- 30. ¿Cuándo debo declarar session_start() ;?
Lo tengo.Gracias por las respuestas de calidad. – Young