cvs: /php4 ChangeLog /php4/ext/session php_session.h session.c

From: Date: Sat, 11 Sep 1999 22:31:05 +0000
Subject: cvs: /php4 ChangeLog /php4/ext/session php_session.h session.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-4334@lists.php.net to get a copy of this message
andrey Sat Sep 11 18:31:05 1999 EDT Modified files: /php4 ChangeLog /php4/ext/session php_session.h session.c Log: - Added session_unset() function - Fixed double session globals shutdown crash - Added warning when session_destroy() is called without session_start() Index: php4/ChangeLog diff -u php4/ChangeLog:1.92 php4/ChangeLog:1.93 --- php4/ChangeLog:1.92 Sat Sep 11 16:36:47 1999 +++ php4/ChangeLog Sat Sep 11 18:31:04 1999 @@ -2,6 +2,8 @@ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 1999, Version 4.0 Beta 3 +- Added session_unset() function (Andrey) +- Fixed double session globals shutdown crash (Andrey) - Fixed crash related to ignore_user_abort ini entry (Andrey) - Added support for external entropy sources for session id creation (on Unices /dev/random and /dev/urandom) (Sascha) Index: php4/ext/session/php_session.h diff -u php4/ext/session/php_session.h:1.13 php4/ext/session/php_session.h:1.14 --- php4/ext/session/php_session.h:1.13 Sat Sep 11 13:20:31 1999 +++ php4/ext/session/php_session.h Sat Sep 11 18:31:04 1999 @@ -102,6 +102,7 @@ PHP_FUNCTION(session_encode); PHP_FUNCTION(session_start); PHP_FUNCTION(session_destroy); +PHP_FUNCTION(session_unset); #ifdef ZTS #define PSLS_D php_ps_globals *ps_globals Index: php4/ext/session/session.c diff -u php4/ext/session/session.c:1.41 php4/ext/session/session.c:1.42 --- php4/ext/session/session.c:1.41 Sat Sep 11 13:20:31 1999 +++ php4/ext/session/session.c Sat Sep 11 18:31:04 1999 @@ -60,6 +60,7 @@ PHP_FE(session_encode, NULL) PHP_FE(session_start, NULL) PHP_FE(session_destroy, NULL) + PHP_FE(session_unset, NULL) {0} }; @@ -89,6 +90,7 @@ static int php_mshutdown_session(SHUTDOWN_FUNC_ARGS); static int php_rshutdown_session(SHUTDOWN_FUNC_ARGS); static void php_info_isapi(ZEND_MODULE_INFO_FUNC_ARGS); +static void php_rinit_session_globals(PSLS_D); static void php_rshutdown_session_globals(PSLS_D); zend_module_entry session_module_entry = { @@ -353,7 +355,6 @@ PS(mod)->write(&PS(mod_data), PS(id), "", 0); } PS(mod)->close(&PS(mod_data)); - PS(nr_open_sessions)--; } #define COOKIE_FMT "Set-cookie: %s=%s" @@ -519,10 +520,14 @@ static void _php_session_destroy(PSLS_D) { if(PS(nr_open_sessions) == 0) + { + php_error(E_WARNING, "Trying to destroy uninitialized session"); return; + } PS(mod)->destroy(&PS(mod_data), PS(id)); php_rshutdown_session_globals(PSLS_C); + php_rinit_session_globals(PSLS_C); PS(nr_open_sessions)--; } @@ -746,8 +751,29 @@ PHP_FUNCTION(session_destroy) { PSLS_FETCH(); - + _php_session_destroy(PSLS_C); +} +/* }}} */ + + +/* {{{ proto session_unset() + Unset all registered variables */ +PHP_FUNCTION(session_unset) +{ + zval **tmp; + char *variable; + ELS_FETCH(); + PSLS_FETCH(); + + for(zend_hash_internal_pointer_reset(&PS(vars)); + zend_hash_get_current_key(&PS(vars), &variable, NULL) == HASH_KEY_IS_STRING; + zend_hash_move_forward(&PS(vars))) { + if(zend_hash_find(EG(active_symbol_table), variable, strlen(variable) + 1, (void **) &tmp) + == SUCCESS) { + zend_hash_del(EG(active_symbol_table), variable, strlen(variable) + 1); + } + } } /* }}} */

« previous php.version4 (#4334) next »