Re: Re: note 69532 rejected and deleted from function.session-destroy by notes editor betz

From: Date: Mon, 11 Sep 2006 14:58:22 +0000
Subject: Re: Re: note 69532 rejected and deleted from function.session-destroy by notes editor betz
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-117016@lists.php.net to get a copy of this message
Hi, There is nothing unsafe about using $_SESSION = array();. Your check is. Relying on the content of $_SESSION to decide whether a session is active or not is not accurate. To check if a session is opened and ready to use, you usually check the session_id()'s return value. As long as $_SESSION is ment to be an array after using session_start(); , the code below a conditionnal session_destroy() might still rely on that fact. For example: foreach($_SESSION as $name => $value) { /* ... */ } would fail after a $_SESSION = null; in a conditionnal block destroying the session. So please stop whining now. Alberto Vallini Sysop a écrit :
Your session_destroy() suggestion to reset a session by $_SESSION=array() is unsafe. You have deleted my posts twice, it is in your right, but if we both give up a bit of our narcissism maybe we can both provide a service to the community that reads you: sessions should not be reset via $_SESSION=array() as so stubbornly suggested, but with their native uninitialized value of NULL $_SESSION=null; If you don't like my posts, at least correct your suggestions with your own hands if mine are too dirty: you caused to me days of fruitless debugging simply because I blindly trusted your idea of unsetting via $_SESSION=array() and session_destroy(), whereas my checks were if(isset($_SESSION)) A manual like yours is presumed faultless by your readers, and the notes enough to accommodate all circumstances: $_SESSION=array() will backfire on whoever uses isset, whereas by using $_SESSION=null, this would NOT happen. It is enough to consider the latter more advisable. As for the rest do as you like: the site is yours, I have my solution, and if you prefer to keep an unsafe advice there also when you ahve a better one, your problem. -----Original message----- From: php-notes@lists.php.net Date: Sun, 10 Sep 2006 12:18:54 +0200 To: webmaster@unitedscripters.com Subject: note 69532 rejected and deleted from function.session-destroy by notes editor betz
You are receiving this email because your note posted to the online PHP manual has been removed by one of the editors. Read the following paragraphs carefully, because they contain pointers to resources better suited for requesting support or reporting bugs, none of which are to be included in manual notes because there are mechanisms and groups in place to deal with those issues. The user contributed notes are not an appropriate place to ask questions, report bugs or suggest new features; please use the resources listed on <http://php.net/support> for those purposes. This was clearly stated in the page you used to submit your note, please carefully re-read those instructions before submitting future contributions. Bug submissions and feature requests should be entered at <http://bugs.php.net/>. For documentation errors use the bug system, and classify the bug as "Documentation problem". Support and ways to find answers to your questions can be found at <http://php.net/support>. Your note has been removed from the online manual. ----- Copy of your note below ----- Please note that any advice to destroy a session via a command like: $_SESSION = array(); may lead to a catastrophe particularly if there is enough clout on it to induce you into believing that must be quite sound an advice - meaning with catastrophe endless nights trying to debug something elusive, because you thought that advice was authoritative. In fact, the correct way should be: $_SESSION=null; /*NULL, not array() !*/ The issue may be as follows: in order to reset the session you use $_SESSION=array() and then you call on other stuff - well, the session still EXISTS as an array, and since your other lines of codes are doing the right thing namely verifying whether (!$_SESSION), that checks invariably fails.. If for any reason you are going to reset a session using an assignement, consider using =NULL.
    
-- Etienne Kneuss http://www.colder.ch/ colder@php.net

« previous php.notes (#117016) next »