cvs: /php4 ChangeLog /php4/ext/session php_session.h session.c
| From: | Andrey Zmievski | 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);
+ }
+ }
}
/* }}} */