session - What additional value does session_destroy bring when I am using session_regenerate_id(true) in PHP? -
i've been reading manual , various pages on web including lot's of questions here on so. however, i've still not been able head around concept of session_destroy() in php in conjunction other means of unsetting session data.
consider site never registers session variables outside $_session superglobal array.
session_start(); $_session = array(); session_regenerate_id(true); // new cookie + old session file on server deleted session_destroy(); // php here not done above? please note have built working login-logout scripts years. question not getting things work, want understand exactly happening.
(a lot of answers here on use session_unset() unsets registered variables. however, never use session_register(), seems redundant.)
let's go source. literally.
session_destroy() , session_regenerate_id() both implemented in ext/session/session.c in php source. it's obvious quick reading if pass true session_regenerate_id, calls s_destroy on underlying session save handler, exact same call 1 made session_destroy. behaviour has remained same since @ least 2005, according svn blame.
session_destroy make 2 additional calls php_rshutdown_session_globals , php_rinit_session_globals. among other things, causes session_destroy() call close function in save handler, done automatically when request has completed, anyway (see php_rshutdown_function). resets session inactive state (like before calling session_start), can seen calling session_status() (introduced in php 5.4).
the take away of never have call session_destroy before calling session_regenerate_id(true). however, if want reset session, still have call after, because otherwise session still active, , current contents of $_session written storage save handler when request has finished.
Comments
Post a Comment