Skip to content

Commit 1a2c15f

Browse files
committed
Expose session status via new function, session_status (Req #52982)
1 parent 53bfe76 commit 1a2c15f

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

ext/session/session.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,6 +1830,18 @@ static PHP_FUNCTION(session_write_close)
18301830
}
18311831
/* }}} */
18321832

1833+
/* {{{ proto int session_status(void)
1834+
Returns the current session status */
1835+
static PHP_FUNCTION(session_status)
1836+
{
1837+
if (zend_parse_parameters_none() == FAILURE) {
1838+
return;
1839+
}
1840+
1841+
RETURN_LONG(PS(session_status));
1842+
}
1843+
/* }}} */
1844+
18331845
/* {{{ arginfo */
18341846
ZEND_BEGIN_ARG_INFO_EX(arginfo_session_name, 0, 0, 0)
18351847
ZEND_ARG_INFO(0, name)
@@ -1903,6 +1915,7 @@ static const zend_function_entry session_functions[] = {
19031915
PHP_FE(session_set_cookie_params, arginfo_session_set_cookie_params)
19041916
PHP_FE(session_get_cookie_params, arginfo_session_void)
19051917
PHP_FE(session_write_close, arginfo_session_void)
1918+
PHP_FE(session_status, arginfo_session_void)
19061919
PHP_FALIAS(session_commit, session_write_close, arginfo_session_void)
19071920
PHP_FE_END
19081921
};
@@ -2004,6 +2017,11 @@ static PHP_MINIT_FUNCTION(session) /* {{{ */
20042017
#endif
20052018
php_session_rfc1867_orig_callback = php_rfc1867_callback;
20062019
php_rfc1867_callback = php_session_rfc1867_callback;
2020+
2021+
REGISTER_LONG_CONSTANT("PHP_SESSION_DISABLED", php_session_disabled, CONST_CS | CONST_PERSISTENT);
2022+
REGISTER_LONG_CONSTANT("PHP_SESSION_NONE", php_session_none, CONST_CS | CONST_PERSISTENT);
2023+
REGISTER_LONG_CONSTANT("PHP_SESSION_ACTIVE", php_session_active, CONST_CS | CONST_PERSISTENT);
2024+
20072025
return SUCCESS;
20082026
}
20092027
/* }}} */

ext/session/tests/session_status.phpt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
--TEST--
2+
Test session_status() function : active, none
3+
--SKIPIF--
4+
<?php include('skipif.inc'); ?>
5+
--FILE--
6+
<?php
7+
8+
ob_start();
9+
10+
echo "*** Testing session_status() : active, none\n";
11+
12+
var_dump(PHP_SESSION_NONE != PHP_SESSION_ACTIVE);
13+
var_dump(session_status() == PHP_SESSION_NONE);
14+
15+
session_start();
16+
17+
var_dump(session_status() == PHP_SESSION_ACTIVE);
18+
19+
?>
20+
--EXPECTF--
21+
*** Testing session_status() : active, none
22+
bool(true)
23+
bool(true)
24+
bool(true)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Test session_status() function : disabled
3+
--SKIPIF--
4+
<?php include('skipif.inc'); ?>
5+
--INI--
6+
session.save_handler=non-existant
7+
--FILE--
8+
<?php
9+
10+
echo "*** Testing session_status() : disabled\n";
11+
12+
var_dump(session_status() == PHP_SESSION_DISABLED);
13+
14+
?>
15+
--EXPECTF--
16+
*** Testing session_status() : disabled
17+
bool(true)

0 commit comments

Comments
 (0)