2011-04-18 18 views
25

Duplicar posibles:
What is the difference between session_unset() and session_destroy() in PHP?Session unset o session_destroy?

¿Cuál es el mejor para la seguridad, y si la sesión no está definido son los tiempos de carga mejor la próxima vez que la sesión tiene que acceder en lugar de recreado?

+0

¿podría aclarar su pregunta? – bensiu

+0

Hay sesión de destruir y deshacer, ¿cuáles son las diferencias? – Basic

+0

No creo que sea un duplicado. De la respuesta aceptada, creo que el usuario significa 'unset()' que no sea 'session_unset()'. –

Respuesta

46

Unset destruirá una variable de sesión particular mientras que session_destroy() destruirá todos los datos de sesión para ese usuario.

Realmente depende de su aplicación en cuanto a cuál debe usar. Solo tenga en cuenta lo anterior.

unset($_SESSION['name']); // will delete just the name data 

session_destroy(); // will delete ALL data associated with that user. 
+3

Gracias que lo aclaró, la sesión de destrucción parece más segura :) – Basic

+2

Si su objetivo es destruir todos los datos de sesión para ese usuario, sí. –

+0

Sí, sería más seguro de esa manera, como en el enlace de cierre de sesión. – Basic

8

Algo a tener en cuenta, las variables de $_SESSION todavía se encuentran en la misma página después de llamar session_destroy() donde como este no es el caso cuando se utiliza unset($_SESSION) o $_SESSION = array(). Además, unset($_SESSION) soplo el superglobal $_SESSION, así que solo hazlo cuando estés destruyendo una sesión.

Con todo lo dicho, es mejor hacer como los documentos PHP lo tiene en the first example for session_destroy().

+0

¿Alguna idea de por qué las variables $ _SESSION todavía están establecidas después de llamar a session_destroy()? – wkm

+2

@wkm, "' session_destroy() 'destruye todos los datos asociados con la sesión actual. No desarma ninguna de las variables globales asociadas con la sesión, ni desarma la cookie de sesión. Para usar las variables de sesión nuevamente,' session_start() 'tiene que ser llamado." - http://php.net/manual/en/function.session-destroy.php –