summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/session/php_session.h1
-rw-r--r--ext/session/session.c27
2 files changed, 28 insertions, 0 deletions
diff --git a/ext/session/php_session.h b/ext/session/php_session.h
index 356a24f605..740754a2fa 100644
--- a/ext/session/php_session.h
+++ b/ext/session/php_session.h
@@ -96,6 +96,7 @@ PHP_FUNCTION(session_id);
PHP_FUNCTION(session_decode);
PHP_FUNCTION(session_register);
PHP_FUNCTION(session_unregister);
+PHP_FUNCTION(session_is_registered);
PHP_FUNCTION(session_encode);
PHP_FUNCTION(session_start);
PHP_FUNCTION(session_destroy);
diff --git a/ext/session/session.c b/ext/session/session.c
index 9396d0dce9..79483d15f2 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -65,6 +65,7 @@ function_entry session_functions[] = {
PHP_FE(session_decode, NULL)
PHP_FE(session_register, NULL)
PHP_FE(session_unregister, NULL)
+ PHP_FE(session_is_registered, NULL)
PHP_FE(session_encode, NULL)
PHP_FE(session_start, NULL)
PHP_FE(session_destroy, NULL)
@@ -473,6 +474,32 @@ PHP_FUNCTION(session_unregister)
}
/* }}} */
+
+/* {{{ proto bool session_is_registered(string varname)
+ checks if a variable is registered in session */
+PHP_FUNCTION(session_is_registered)
+{
+ pval *p_name;
+ pval *p_var;
+ int ac = ARG_COUNT(ht);
+ PSLS_FETCH();
+
+ if(ac != 1 || getParameters(ht, ac, &p_name) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_string(p_name);
+
+ if (zend_hash_find(&PS(vars), p_name->value.str.val, p_name->value.str.len+1,
+ (void **)&p_var) == SUCCESS) {
+ RETURN_TRUE;
+ } else {
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+
+
/* {{{ proto string session_encode()
serializes the current setup and returns the serialized representation */
PHP_FUNCTION(session_encode)