Req #54383 [Asn->Csd]: extend the usage of session_encode/session_decode
| From: | yohgaki@php.net | Date: | Wed, 21 Aug 2013 02:13:48 +0000 |
| Subject: | Req #54383 [Asn->Csd]: extend the usage of session_encode/session_decode | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-181074@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=54383&edit=1
ID: 54383
Updated by: yohgaki@php.net
Reported by: tyra3l at gmail dot com
Summary: extend the usage of session_encode/session_decode
-Status: Assigned
+Status: Closed
Type: Feature/Change Request
Package: Session related
PHP Version: 5.3.6
Assigned To: yohgaki
Block user comment: N
Private report: N
New Comment:
php_serialize will be available from PHP 5.5.4.
http://git.php.net/?p=php-
src.git;a=commit;h=c51f77fe83cea3a48d89423863e6916b77628e47
Previous Comments:
------------------------------------------------------------------------
[2011-07-02 20:13:27] arraypad at gmail dot com
The BC break would be in the session serializer API. Serializers are expected to read directly from
$_SESSION - the PS_ENCODE_LOOP macro is provided to facilitate this but it may not be used - and to
write back to $_SESSION. Again we provide php_set_session_var() to facilitate this and the two
serializers we bundle use it, but custom serializers may not.
We could provide this feature without the BC break by adding a separate interface, but it
wouldn't work for any custom serializers (igbinary for example) until they were updated.
I think the current interface is poor, but I'm not convinced that adding another interface is
the answer - I'd rather fix it and accept the BC break, but that would have to wait for a new
major version.
------------------------------------------------------------------------
[2011-07-02 19:32:17] tyra3l at gmail dot com
I don't see your point.
as I mentioned, this change would be backward compatible, because by default, the
behavior would be the same, but it would be possible to encode/decode the session
from/to an arbitary variable.
Tyrael
------------------------------------------------------------------------
[2011-07-02 19:23:39] arraypad at gmail dot com
The problem with this is that we currently expect the (possibly custom) serializer to work directly
on the $_SESSION array. Changing this would be a big BC break in the session API.
------------------------------------------------------------------------
[2011-03-25 16:16:33] tyra3l at gmail dot com
Description:
------------
I always wondered about the rationale about the session_encode/decode in it's
current form, but Chris Shiflett's blogpost made me to open this bugreport:
http://shiflett.org/blog/2011/mar/php-session-debugging
I would propose two changes:
- add a new optional array argument for session_encode, if it is passed, then
encode that instead of the $_SESSION array.
- add a new optional boolean argument for session_decode, if that sets to true
(default is false), then the decoded session array is returned instead of
inserted to $_SESSION
obviously the documentation about the return variable for session_decode should
also be updated to reflect this change.
this should be backward compatible change, but it would allow us to
encode/decode an arbitary serialized session without the need to save and reload
the contents of the current $_SESSION array.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=54383&edit=1