diff options
author | Andrei Zmievski <andrei@php.net> | 2000-03-06 14:36:11 +0000 |
---|---|---|
committer | Andrei Zmievski <andrei@php.net> | 2000-03-06 14:36:11 +0000 |
commit | 29c133f11d3c0c4480c0accc60cc992115e3eb54 (patch) | |
tree | 63ddd135810a2229fa82cd23c6d3e45afb9e186c | |
parent | edb2b71387adf9c76ac4c466cee10ebf5aab8723 (diff) | |
download | php-git-29c133f11d3c0c4480c0accc60cc992115e3eb54.tar.gz |
(php_get_session_var)
The variables are now serialized either from globals or from
$HTTP_STATE_VARS[] array, depending on register_globals and track_vars
settings.
-rw-r--r-- | ext/session/session.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 0fe81c7e69..a27ae078de 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -158,7 +158,8 @@ typedef struct { char *key; \ ulong num_key; \ zval **struc; \ - ELS_FETCH() + ELS_FETCH(); \ + PLS_FETCH() #define ENCODE_LOOP(code) \ for (zend_hash_internal_pointer_reset(&PS(vars)); \ @@ -197,7 +198,12 @@ static void php_set_session_var(char *name, size_t namelen, static int php_get_session_var(char *name, size_t namelen, zval ***state_var PSLS_DC ELS_DC) { - return zend_hash_find(&EG(symbol_table), name, namelen + 1, (void **)state_var); + HashTable *ht = &EG(symbol_table); + + if (!PG(register_globals) && PG(track_vars)) + ht = PS(http_state_vars)->value.ht; + + return zend_hash_find(ht, name, namelen + 1, (void **)state_var); } PS_SERIALIZER_ENCODE_FUNC(php) |