mirror of
https://github.com/php/php-src.git
synced 2024-11-27 03:44:07 +08:00
Fix bug #71038 - session_start() returns true even when it failed
PR #2167
This commit is contained in:
parent
552c957500
commit
7f196e321f
30
UPGRADING
30
UPGRADING
@ -36,6 +36,36 @@ PHP 7.2 UPGRADE NOTES
|
||||
keys. This fixes the behaviour of previous versions, where numeric string
|
||||
property names would become inaccessible string keys.
|
||||
|
||||
- Session:
|
||||
. Session is made to manage session status corretly and prevents invalid operations.
|
||||
Only inappropriate codes are affected by this change. If you have problems with this,
|
||||
it means you have problem in your code.
|
||||
. Functions are made to set or return correct session status.
|
||||
session_start(), session_status(), session_regenerate_id()
|
||||
. Functions are made to return bool from null. These functions have void parameter
|
||||
and void parameter is checked.
|
||||
session_unset(), session_write_close()/session_commit(), session_abort(),
|
||||
session_reset()
|
||||
. Functions prohibit invalid operations with regard to session status and
|
||||
HTTP header status, returns correct bool return value.
|
||||
session_start(), session_set_cookie_params(), session_name(), session_module_name(),
|
||||
session_set_save_handler(), session_regenerate_id(), session_cache_limiter(),
|
||||
session_cache_expire(), session_unset(), session_destroy(),
|
||||
session_write_close()/session_commit(), session_reset()
|
||||
. INI value change by ini_set() returns update status correctly. Invalid INI modifications
|
||||
are checked and made to fail.
|
||||
session.name, session.save_path, session.cookie_lifetime, session.cookie_path,
|
||||
session.cookie_domain, session.cookie_httponly, session.cookie_secure,
|
||||
session.use_cookies, session.use_only_cookies, session.use_strict_mode,
|
||||
session.referer_check, session.cache_limiter, session.cache_expire,
|
||||
session.lazy_write, session.save_handler, session.serialize_handler,
|
||||
session.gc_probability, session.gc_divior, session.gc_maxlifetime,
|
||||
. Some E_ERRORs are changed to E_WARNING since session status is managed correctly.
|
||||
session_start()
|
||||
. Session no longer initialize $_SESSION for invalid and useless session.
|
||||
session_start()
|
||||
|
||||
|
||||
========================================
|
||||
2. New Features
|
||||
========================================
|
||||
|
@ -31,3 +31,8 @@ PHP 7.1 INTERNALS UPGRADE NOTES
|
||||
3. Module changes
|
||||
========================
|
||||
|
||||
- Session:
|
||||
. php_session_start()/session_reset_id() return value is changed from void to int.
|
||||
It returns SUCCESS/FAILURE.
|
||||
. Session module manages session status correctly.
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
# include "ext/hash/php_hash.h"
|
||||
#endif
|
||||
|
||||
#define PHP_SESSION_API 20150121
|
||||
#define PHP_SESSION_API 20161017
|
||||
|
||||
#include "php_version.h"
|
||||
#define PHP_SESSION_VERSION PHP_VERSION
|
||||
@ -265,13 +265,13 @@ PHPAPI int php_session_register_serializer(const char *name,
|
||||
int (*decode)(PS_SERIALIZER_DECODE_ARGS));
|
||||
|
||||
PHPAPI void php_session_set_id(char *id);
|
||||
PHPAPI void php_session_start(void);
|
||||
PHPAPI int php_session_start(void);
|
||||
|
||||
PHPAPI ps_module *_php_find_ps_module(char *name);
|
||||
PHPAPI const ps_serializer *_php_find_ps_serializer(char *name);
|
||||
|
||||
PHPAPI int php_session_valid_key(const char *key);
|
||||
PHPAPI void php_session_reset_id(void);
|
||||
PHPAPI int php_session_reset_id(void);
|
||||
|
||||
#define PS_ADD_VARL(name) do { \
|
||||
php_add_session_var(name); \
|
||||
|
@ -94,10 +94,16 @@ zend_class_entry *php_session_update_timestamp_iface_entry;
|
||||
return FAILURE; \
|
||||
}
|
||||
|
||||
#define SESSION_CHECK_OUTPUT_STATE \
|
||||
if (SG(headers_sent) && stage != ZEND_INI_STAGE_DEACTIVATE) { \
|
||||
php_error_docref(NULL, E_WARNING, "Headers already sent. You cannot change the session module's ini settings at this time"); \
|
||||
return FAILURE; \
|
||||
}
|
||||
|
||||
#define APPLY_TRANS_SID (PS(use_trans_sid) && !PS(use_only_cookies))
|
||||
|
||||
static void php_session_send_cookie(void);
|
||||
static void php_session_abort(void);
|
||||
static int php_session_send_cookie(void);
|
||||
static int php_session_abort(void);
|
||||
|
||||
/* Dispatched by RINIT and by php_session_destroy */
|
||||
static inline void php_rinit_session_globals(void) /* {{{ */
|
||||
@ -370,7 +376,7 @@ static zend_long php_session_gc(zend_bool immediate) /* {{{ */
|
||||
return num;
|
||||
} /* }}} */
|
||||
|
||||
static void php_session_initialize(void) /* {{{ */
|
||||
static int php_session_initialize(void) /* {{{ */
|
||||
{
|
||||
zend_string *val = NULL;
|
||||
|
||||
@ -378,8 +384,8 @@ static void php_session_initialize(void) /* {{{ */
|
||||
|
||||
if (!PS(mod)) {
|
||||
PS(session_status) = php_session_disabled;
|
||||
php_error_docref(NULL, E_ERROR, "No storage module chosen - failed to initialize session");
|
||||
return;
|
||||
php_error_docref(NULL, E_WARNING, "No storage module chosen - failed to initialize session");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* Open session handler first */
|
||||
@ -387,8 +393,8 @@ static void php_session_initialize(void) /* {{{ */
|
||||
/* || PS(mod_data) == NULL */ /* FIXME: open must set valid PS(mod_data) with success */
|
||||
) {
|
||||
php_session_abort();
|
||||
php_error_docref(NULL, E_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path));
|
||||
return;
|
||||
php_error_docref(NULL, E_WARNING, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path));
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* If there is no ID, use session module to create one */
|
||||
@ -400,7 +406,7 @@ static void php_session_initialize(void) /* {{{ */
|
||||
if (!PS(id)) {
|
||||
php_session_abort();
|
||||
zend_throw_error(NULL, "Failed to create session ID: %s (path: %s)", PS(mod)->s_name, PS(save_path));
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
if (PS(use_cookies)) {
|
||||
PS(send_cookie) = 1;
|
||||
@ -419,7 +425,10 @@ static void php_session_initialize(void) /* {{{ */
|
||||
}
|
||||
}
|
||||
|
||||
php_session_reset_id();
|
||||
if (php_session_reset_id() == FAILURE) {
|
||||
php_session_abort();
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* Read data */
|
||||
php_session_track_init();
|
||||
@ -428,7 +437,7 @@ static void php_session_initialize(void) /* {{{ */
|
||||
/* Some broken save handler implementation returns FAILURE for non-existent session ID */
|
||||
/* It's better to raise error for this, but disabled error for better compatibility */
|
||||
php_error_docref(NULL, E_WARNING, "Failed to read session data: %s (path: %s)", PS(mod)->s_name, PS(save_path));
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* GC must be done after read */
|
||||
@ -445,6 +454,7 @@ static void php_session_initialize(void) /* {{{ */
|
||||
php_session_decode(val);
|
||||
zend_string_release(val);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -519,7 +529,9 @@ static void php_session_normalize_vars() /* {{{ */
|
||||
static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */
|
||||
{
|
||||
ps_module *tmp;
|
||||
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
|
||||
tmp = _php_find_ps_module(ZSTR_VAL(new_value));
|
||||
|
||||
@ -549,7 +561,9 @@ static PHP_INI_MH(OnUpdateSaveHandler) /* {{{ */
|
||||
static PHP_INI_MH(OnUpdateSerializer) /* {{{ */
|
||||
{
|
||||
const ps_serializer *tmp;
|
||||
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
|
||||
tmp = _php_find_ps_serializer(ZSTR_VAL(new_value));
|
||||
|
||||
@ -577,6 +591,7 @@ static PHP_INI_MH(OnUpdateSerializer) /* {{{ */
|
||||
static PHP_INI_MH(OnUpdateTransSid) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
|
||||
if (!strncasecmp(ZSTR_VAL(new_value), "on", sizeof("on"))) {
|
||||
PS(use_trans_sid) = (zend_bool) 1;
|
||||
@ -588,8 +603,12 @@ static PHP_INI_MH(OnUpdateTransSid) /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
|
||||
/* Only do the safemode/open_basedir check at runtime */
|
||||
if (stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) {
|
||||
char *p;
|
||||
@ -614,13 +633,16 @@ static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */
|
||||
}
|
||||
}
|
||||
|
||||
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
return SUCCESS;
|
||||
return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateName) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
|
||||
/* Numeric session.name won't work at all */
|
||||
if ((!ZSTR_LEN(new_value) || is_numeric_string(ZSTR_VAL(new_value), ZSTR_LEN(new_value), NULL, NULL, 0))) {
|
||||
int err_type;
|
||||
@ -638,16 +660,58 @@ static PHP_INI_MH(OnUpdateName) /* {{{ */
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
OnUpdateStringUnempty(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
return SUCCESS;
|
||||
return OnUpdateStringUnempty(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateCookieLifetime) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
if (atol(ZSTR_VAL(new_value)) < 0) {
|
||||
php_error_docref(NULL, E_WARNING, "CookieLifetime cannot be negative");
|
||||
return FAILURE;
|
||||
}
|
||||
return OnUpdateLongGEZero(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateSessionLong) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
return OnUpdateLong(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateSessionString) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
return OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateSessionBool) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateSidLength) /* {{{ */
|
||||
{
|
||||
zend_long val;
|
||||
char *endptr = NULL;
|
||||
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10);
|
||||
if (endptr && (*endptr == '\0')
|
||||
&& val >= 22 && val <= PS_MAX_SID_LENGTH) {
|
||||
@ -666,6 +730,8 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */
|
||||
zend_long val;
|
||||
char *endptr = NULL;
|
||||
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10);
|
||||
if (endptr && (*endptr == '\0')
|
||||
&& val >= 4 && val <=6) {
|
||||
@ -680,6 +746,16 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */
|
||||
/* }}} */
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateLazyWrite) /* {{{ */
|
||||
{
|
||||
SESSION_CHECK_ACTIVE_STATE;
|
||||
SESSION_CHECK_OUTPUT_STATE;
|
||||
return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
|
||||
static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
|
||||
{
|
||||
int tmp;
|
||||
@ -703,29 +779,29 @@ static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */
|
||||
/* {{{ PHP_INI
|
||||
*/
|
||||
PHP_INI_BEGIN()
|
||||
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir,save_path, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateName, session_name, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.save_path", "", PHP_INI_ALL, OnUpdateSaveDir, save_path, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.name", "PHPSESSID", PHP_INI_ALL, OnUpdateName, session_name, php_ps_globals, ps_globals)
|
||||
PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler)
|
||||
STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_PERDIR, OnUpdateBool, auto_start, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL, OnUpdateLong, gc_probability, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_divisor", "100", PHP_INI_ALL, OnUpdateLong, gc_divisor, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL, OnUpdateLong, gc_maxlifetime, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_PERDIR, OnUpdateBool, auto_start, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL, OnUpdateSessionLong, gc_probability, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_divisor", "100", PHP_INI_ALL, OnUpdateSessionLong, gc_divisor, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL, OnUpdateSessionLong, gc_maxlifetime, php_ps_globals, ps_globals)
|
||||
PHP_INI_ENTRY("session.serialize_handler", "php", PHP_INI_ALL, OnUpdateSerializer)
|
||||
STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateLong, cookie_lifetime, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL, OnUpdateString, cookie_path, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL, OnUpdateString, cookie_domain, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.cookie_secure", "", PHP_INI_ALL, OnUpdateBool, cookie_secure, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.cookie_httponly", "", PHP_INI_ALL, OnUpdateBool, cookie_httponly, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.use_cookies", "1", PHP_INI_ALL, OnUpdateBool, use_cookies, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateBool, use_only_cookies, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateBool, use_strict_mode, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL, OnUpdateString, extern_referer_chk, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL, OnUpdateString, cache_limiter, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL, OnUpdateLong, cache_expire, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateCookieLifetime,cookie_lifetime, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL, OnUpdateSessionString, cookie_path, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL, OnUpdateSessionString, cookie_domain, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_secure", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_secure, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cookie_httponly", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_httponly, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.use_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_cookies, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_only_cookies, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateSessionBool, use_strict_mode, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL, OnUpdateSessionString, extern_referer_chk, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL, OnUpdateSessionString, cache_limiter, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL, OnUpdateSessionLong, cache_expire, php_ps_globals, ps_globals)
|
||||
PHP_INI_ENTRY("session.use_trans_sid", "0", PHP_INI_ALL, OnUpdateTransSid)
|
||||
PHP_INI_ENTRY("session.sid_length", "32", PHP_INI_ALL, OnUpdateSidLength)
|
||||
PHP_INI_ENTRY("session.sid_bits_per_character", "4", PHP_INI_ALL, OnUpdateSidBits)
|
||||
STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateBool, lazy_write, php_ps_globals, ps_globals)
|
||||
STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateLazyWrite, lazy_write, php_ps_globals, ps_globals)
|
||||
|
||||
/* Upload progress */
|
||||
STD_PHP_INI_BOOLEAN("session.upload_progress.enabled",
|
||||
@ -1236,7 +1312,7 @@ static void php_session_remove_cookie(void) {
|
||||
efree(session_cookie);
|
||||
}
|
||||
|
||||
static void php_session_send_cookie(void) /* {{{ */
|
||||
static int php_session_send_cookie(void) /* {{{ */
|
||||
{
|
||||
smart_str ncookie = {0};
|
||||
zend_string *date_fmt = NULL;
|
||||
@ -1251,7 +1327,7 @@ static void php_session_send_cookie(void) /* {{{ */
|
||||
} else {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot send session cookie - headers already sent");
|
||||
}
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* URL encode session_name and id because they might be user supplied */
|
||||
@ -1309,6 +1385,8 @@ static void php_session_send_cookie(void) /* {{{ */
|
||||
header, probably sent with setcookie() will be replaced! */
|
||||
sapi_add_header_ex(estrndup(ZSTR_VAL(ncookie.s), ZSTR_LEN(ncookie.s)), ZSTR_LEN(ncookie.s), 0, 0);
|
||||
smart_str_free(&ncookie);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -1354,7 +1432,8 @@ static void ppid2sid(zval *ppid) {
|
||||
}
|
||||
}
|
||||
|
||||
PHPAPI void php_session_reset_id(void) /* {{{ */
|
||||
|
||||
PHPAPI int php_session_reset_id(void) /* {{{ */
|
||||
{
|
||||
int module_number = PS(module_number);
|
||||
zval *sid, *data, *ppid;
|
||||
@ -1362,7 +1441,7 @@ PHPAPI void php_session_reset_id(void) /* {{{ */
|
||||
|
||||
if (!PS(id)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot set session ID - session ID is not initialized");
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (PS(use_cookies) && PS(send_cookie)) {
|
||||
@ -1419,10 +1498,12 @@ PHPAPI void php_session_reset_id(void) /* {{{ */
|
||||
zend_string_release(sname);
|
||||
php_url_scanner_add_session_var(PS(session_name), strlen(PS(session_name)), ZSTR_VAL(PS(id)), ZSTR_LEN(PS(id)), 1);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
PHPAPI void php_session_start(void) /* {{{ */
|
||||
|
||||
PHPAPI int php_session_start(void) /* {{{ */
|
||||
{
|
||||
zval *ppid;
|
||||
zval *data;
|
||||
@ -1432,7 +1513,7 @@ PHPAPI void php_session_start(void) /* {{{ */
|
||||
switch (PS(session_status)) {
|
||||
case php_session_active:
|
||||
php_error(E_NOTICE, "A session had already been started - ignoring session_start()");
|
||||
return;
|
||||
return FAILURE;
|
||||
break;
|
||||
|
||||
case php_session_disabled:
|
||||
@ -1441,7 +1522,7 @@ PHPAPI void php_session_start(void) /* {{{ */
|
||||
PS(mod) = _php_find_ps_module(value);
|
||||
if (!PS(mod)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot find save handler '%s' - session startup failed", value);
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
value = zend_ini_string("session.serialize_handler", sizeof("session.serialize_handler") - 1, 0);
|
||||
@ -1449,14 +1530,14 @@ PHPAPI void php_session_start(void) /* {{{ */
|
||||
PS(serializer) = _php_find_ps_serializer(value);
|
||||
if (!PS(serializer)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot find serialization handler '%s' - session startup failed", value);
|
||||
return;
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
PS(session_status) = php_session_none;
|
||||
/* fallthrough */
|
||||
/* Fall through */
|
||||
|
||||
default:
|
||||
case php_session_none:
|
||||
default:
|
||||
/* Setup internal flags */
|
||||
PS(define_sid) = !PS(use_only_cookies); /* SID constant is defined when non-cookie ID is used */
|
||||
PS(send_cookie) = PS(use_cookies) || PS(use_only_cookies);
|
||||
@ -1532,36 +1613,50 @@ PHPAPI void php_session_start(void) /* {{{ */
|
||||
PS(id) = NULL;
|
||||
}
|
||||
|
||||
php_session_initialize();
|
||||
php_session_cache_limiter();
|
||||
if (php_session_initialize() == FAILURE
|
||||
|| php_session_cache_limiter() == -2) {
|
||||
PS(session_status) = php_session_none;
|
||||
if (PS(id)) {
|
||||
zend_string_release(PS(id));
|
||||
PS(id) = NULL;
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void php_session_flush(int write) /* {{{ */
|
||||
static int php_session_flush(int write) /* {{{ */
|
||||
{
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_session_save_current_state(write);
|
||||
PS(session_status) = php_session_none;
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void php_session_abort(void) /* {{{ */
|
||||
static int php_session_abort(void) /* {{{ */
|
||||
{
|
||||
if (PS(session_status) == php_session_active) {
|
||||
if (PS(mod_data) || PS(mod_user_implemented)) {
|
||||
PS(mod)->s_close(&PS(mod_data));
|
||||
}
|
||||
PS(session_status) = php_session_none;
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void php_session_reset(void) /* {{{ */
|
||||
static int php_session_reset(void) /* {{{ */
|
||||
{
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_session_initialize();
|
||||
if (PS(session_status) == php_session_active
|
||||
&& php_session_initialize() == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAILURE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -1581,7 +1676,7 @@ PHPAPI void session_adapt_url(const char *url, size_t urllen, char **new, size_t
|
||||
* Userspace exported functions *
|
||||
******************************** */
|
||||
|
||||
/* {{{ proto void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])
|
||||
/* {{{ proto bool session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])
|
||||
Set session cookie parameters */
|
||||
static PHP_FUNCTION(session_set_cookie_params)
|
||||
{
|
||||
@ -1596,33 +1691,61 @@ static PHP_FUNCTION(session_set_cookie_params)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change session cookie parameters when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change session cookie parameters when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_string_ex(lifetime);
|
||||
|
||||
ini_name = zend_string_init("session.cookie_lifetime", sizeof("session.cookie_lifetime") - 1, 0);
|
||||
zend_alter_ini_entry(ini_name, Z_STR_P(lifetime), PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
|
||||
if (zend_alter_ini_entry(ini_name, Z_STR_P(lifetime), PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
|
||||
zend_string_release(ini_name);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
zend_string_release(ini_name);
|
||||
|
||||
if (path) {
|
||||
ini_name = zend_string_init("session.cookie_path", sizeof("session.cookie_path") - 1, 0);
|
||||
zend_alter_ini_entry(ini_name, path, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
|
||||
if (zend_alter_ini_entry(ini_name, path, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
|
||||
zend_string_release(ini_name);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
zend_string_release(ini_name);
|
||||
}
|
||||
if (domain) {
|
||||
ini_name = zend_string_init("session.cookie_domain", sizeof("session.cookie_domain") - 1, 0);
|
||||
zend_alter_ini_entry(ini_name, domain, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
|
||||
if (zend_alter_ini_entry(ini_name, domain, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
|
||||
zend_string_release(ini_name);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
zend_string_release(ini_name);
|
||||
}
|
||||
|
||||
if (argc > 3) {
|
||||
ini_name = zend_string_init("session.cookie_secure", sizeof("session.cookie_secure") - 1, 0);
|
||||
zend_alter_ini_entry_chars(ini_name, secure ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
|
||||
if (zend_alter_ini_entry_chars(ini_name, secure ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
|
||||
zend_string_release(ini_name);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
zend_string_release(ini_name);
|
||||
}
|
||||
if (argc > 4) {
|
||||
ini_name = zend_string_init("session.cookie_httponly", sizeof("session.cookie_httponly") - 1, 0);
|
||||
zend_alter_ini_entry_chars(ini_name, httponly ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME);
|
||||
if (zend_alter_ini_entry_chars(ini_name, httponly ? "1" : "0", 1, PHP_INI_USER, PHP_INI_STAGE_RUNTIME) == FAILURE) {
|
||||
zend_string_release(ini_name);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
zend_string_release(ini_name);
|
||||
}
|
||||
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -1655,6 +1778,16 @@ static PHP_FUNCTION(session_name)
|
||||
return;
|
||||
}
|
||||
|
||||
if (name && PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change session name when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change session name when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETVAL_STRING(PS(session_name));
|
||||
|
||||
if (name) {
|
||||
@ -1676,6 +1809,16 @@ static PHP_FUNCTION(session_module_name)
|
||||
return;
|
||||
}
|
||||
|
||||
if (name && PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save handler module when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save handler module when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
/* Set return_value to current module name */
|
||||
if (PS(mod) && PS(mod)->s_name) {
|
||||
RETVAL_STRING(PS(mod)->s_name);
|
||||
@ -1702,7 +1845,7 @@ static PHP_FUNCTION(session_module_name)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc, string create_sid)
|
||||
/* {{{ proto bool session_set_save_handler(string open, string close, string read, string write, string destroy, string gc, string create_sid)
|
||||
Sets user-level functions */
|
||||
static PHP_FUNCTION(session_set_save_handler)
|
||||
{
|
||||
@ -1711,7 +1854,13 @@ static PHP_FUNCTION(session_set_save_handler)
|
||||
zend_string *name;
|
||||
zend_string *ini_name, *ini_val;
|
||||
|
||||
if (PS(session_status) != php_session_none) {
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save handler when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save handler when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@ -1868,6 +2017,16 @@ static PHP_FUNCTION(session_save_path)
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save path when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change save path when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETVAL_STRING(PS(save_path));
|
||||
|
||||
if (name) {
|
||||
@ -1894,6 +2053,11 @@ static PHP_FUNCTION(session_id)
|
||||
return;
|
||||
}
|
||||
|
||||
if (name && SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change session id when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (PS(id)) {
|
||||
/* keep compatibility for "\0" characters ???
|
||||
* see: ext/session/tests/session_id_error3.phpt */
|
||||
@ -1932,7 +2096,7 @@ static PHP_FUNCTION(session_regenerate_id)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent) && PS(use_cookies)) {
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot regenerate session id - headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@ -2008,13 +2172,15 @@ static PHP_FUNCTION(session_regenerate_id)
|
||||
if (PS(use_cookies)) {
|
||||
PS(send_cookie) = 1;
|
||||
}
|
||||
php_session_reset_id();
|
||||
if (php_session_reset_id() == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void session_create_id([string prefix])
|
||||
/* {{{ proto string session_create_id([string prefix])
|
||||
Generate new session ID. Intended for user save handlers. */
|
||||
/* This is not used yet */
|
||||
static PHP_FUNCTION(session_create_id)
|
||||
@ -2079,6 +2245,16 @@ static PHP_FUNCTION(session_cache_limiter)
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when session is active");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change cache limiter when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETVAL_STRING(PS(cache_limiter));
|
||||
|
||||
if (limiter) {
|
||||
@ -2100,6 +2276,16 @@ static PHP_FUNCTION(session_cache_expire)
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change cache expire when session is active");
|
||||
RETURN_LONG(PS(cache_expire));
|
||||
}
|
||||
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot change cache expire when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETVAL_LONG(PS(cache_expire));
|
||||
|
||||
if (expires) {
|
||||
@ -2136,15 +2322,15 @@ static PHP_FUNCTION(session_decode)
|
||||
{
|
||||
zend_string *str = NULL;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
php_error_docref(NULL, E_WARNING, "Session is not active. You cannot decode session data");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (php_session_decode(str) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@ -2178,6 +2364,21 @@ static PHP_FUNCTION(session_start)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (PS(session_status) == php_session_active) {
|
||||
php_error_docref(NULL, E_NOTICE, "A session had already been started - ignoring");
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO: To prevent unusable session with trans sid, actual output started status is
|
||||
* required. i.e. There shouldn't be any outputs in output buffer, otherwise session
|
||||
* module is unable to rewrite output.
|
||||
*/
|
||||
if (SG(headers_sent)) {
|
||||
php_error_docref(NULL, E_WARNING, "Cannot start session when headers already sent");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
/* set options */
|
||||
if (options) {
|
||||
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(options), num_idx, str_idx, value) {
|
||||
@ -2209,6 +2410,12 @@ static PHP_FUNCTION(session_start)
|
||||
php_session_start();
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
IF_SESSION_VARS() {
|
||||
zval *sess_var = Z_REFVAL(PS(http_session_vars));
|
||||
SEPARATE_ARRAY(sess_var);
|
||||
/* Clean $_SESSION. */
|
||||
zend_hash_clean(Z_ARRVAL_P(sess_var));
|
||||
}
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@ -2232,10 +2439,14 @@ static PHP_FUNCTION(session_destroy)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void session_unset(void)
|
||||
/* {{{ proto bool session_unset(void)
|
||||
Unset all registered variables */
|
||||
static PHP_FUNCTION(session_unset)
|
||||
{
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@ -2247,6 +2458,7 @@ static PHP_FUNCTION(session_unset)
|
||||
/* Clean $_SESSION. */
|
||||
zend_hash_clean(Z_ARRVAL_P(sess_var));
|
||||
}
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@ -2275,27 +2487,51 @@ static PHP_FUNCTION(session_gc)
|
||||
/* }}} */
|
||||
|
||||
|
||||
/* {{{ proto void session_write_close(void)
|
||||
/* {{{ proto bool session_write_close(void)
|
||||
Write session data and end session */
|
||||
static PHP_FUNCTION(session_write_close)
|
||||
{
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
php_session_flush(1);
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void session_abort(void)
|
||||
/* {{{ proto bool session_abort(void)
|
||||
Abort session and end session. Session data will not be written */
|
||||
static PHP_FUNCTION(session_abort)
|
||||
{
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
php_session_abort();
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto void session_reset(void)
|
||||
/* {{{ proto bool session_reset(void)
|
||||
Reset session data from saved session data */
|
||||
static PHP_FUNCTION(session_reset)
|
||||
{
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PS(session_status) != php_session_active) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
php_session_reset();
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
@ -11,6 +11,7 @@ session.serialize_handler=php
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
class handler {
|
||||
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
|
||||
|
@ -10,8 +10,8 @@ session.name=PHPSESSID
|
||||
session.serialize_handler=php
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
class handler {
|
||||
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
|
||||
|
@ -11,6 +11,7 @@ session.save_handler=files
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
session_id("abtest");
|
||||
session_start();
|
||||
@ -18,7 +19,7 @@ session_start();
|
||||
class a {
|
||||
public $test = "hallo";
|
||||
}
|
||||
|
||||
|
||||
class b {
|
||||
public $a;
|
||||
function __construct(&$a) {
|
||||
|
@ -11,6 +11,7 @@ session.save_handler=files
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
session_id("abtest");
|
||||
|
||||
|
@ -11,6 +11,7 @@ session.serialize_handler=php
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
class handler {
|
||||
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
|
||||
|
@ -10,8 +10,8 @@ session.name=PHPSESSID
|
||||
session.serialize_handler=php
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
class handler {
|
||||
public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
|
||||
|
@ -11,6 +11,7 @@ session.save_handler=files
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
session_id("abtest");
|
||||
session_start();
|
||||
|
@ -11,6 +11,7 @@ session.save_handler=files
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ob_start();
|
||||
|
||||
session_id("abtest");
|
||||
|
||||
|
@ -14,4 +14,5 @@ echo "ok\n";
|
||||
--EXPECTF--
|
||||
Warning: session_start(): user session functions not defined in %s on line 3
|
||||
|
||||
Fatal error: session_start(): Failed to initialize storage module: user (path:%s) in %s on line 3
|
||||
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 3
|
||||
ok
|
||||
|
@ -7,6 +7,7 @@ session.name=
|
||||
<?php if(substr(PHP_OS, 0, 3) == "WIN") die("skip Not for Windows"); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
ob_start();
|
||||
|
||||
var_dump(session_name("foo"));
|
||||
var_dump(session_name("bar"));
|
||||
|
@ -15,8 +15,6 @@ var_dump(session_destroy());
|
||||
--EXPECTF--
|
||||
bool(true)
|
||||
|
||||
Warning: session_module_name(): A session is active. You cannot change the session module's ini settings at this time in %s on line %d
|
||||
|
||||
Warning: session_destroy(): Session object destruction failed in %s on line %d
|
||||
bool(false)
|
||||
Warning: session_module_name(): Cannot change save handler module when session is active in %s on line 4
|
||||
bool(true)
|
||||
===DONE===
|
||||
|
@ -38,6 +38,7 @@ Content-Disposition: form-data; name="file2"; filename="file2.txt"
|
||||
--FILE--
|
||||
<?php
|
||||
error_reporting(0);
|
||||
ob_start();
|
||||
session_start();
|
||||
var_dump(session_id());
|
||||
var_dump(basename(__FILE__) == $_POST[ini_get("session.upload_progress.name")]);
|
||||
@ -57,7 +58,7 @@ Warning: Unknown: The session id is too long or contains illegal characters, val
|
||||
Warning: Unknown: Failed to read session data: files (path: ) in Unknown on line 0
|
||||
|
||||
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
|
||||
string(%d) "%s"
|
||||
string(%d) ""
|
||||
bool(true)
|
||||
array(2) {
|
||||
[%u|b%"file1"]=>
|
||||
@ -87,4 +88,50 @@ array(2) {
|
||||
int(1)
|
||||
}
|
||||
}
|
||||
NULL
|
||||
array(5) {
|
||||
["start_time"]=>
|
||||
int(%d)
|
||||
["content_length"]=>
|
||||
int(469)
|
||||
["bytes_processed"]=>
|
||||
int(469)
|
||||
["done"]=>
|
||||
bool(true)
|
||||
["files"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(7) {
|
||||
["field_name"]=>
|
||||
string(5) "file1"
|
||||
["name"]=>
|
||||
string(9) "file1.txt"
|
||||
["tmp_name"]=>
|
||||
string(%d) "%s"
|
||||
["error"]=>
|
||||
int(0)
|
||||
["done"]=>
|
||||
bool(true)
|
||||
["start_time"]=>
|
||||
int(%d)
|
||||
["bytes_processed"]=>
|
||||
int(1)
|
||||
}
|
||||
[1]=>
|
||||
array(7) {
|
||||
["field_name"]=>
|
||||
string(5) "file2"
|
||||
["name"]=>
|
||||
string(9) "file2.txt"
|
||||
["tmp_name"]=>
|
||||
string(%d) "%s"
|
||||
["error"]=>
|
||||
int(0)
|
||||
["done"]=>
|
||||
bool(true)
|
||||
["start_time"]=>
|
||||
int(%d)
|
||||
["bytes_processed"]=>
|
||||
int(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,12 +59,12 @@ array(1) {
|
||||
["lazy_write"]=>
|
||||
bool(false)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
string(6) "testid"
|
||||
*** With lazy_write ***
|
||||
string(6) "testid"
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
string(6) "testid"
|
||||
*** Cleanup ***
|
||||
string(6) "testid"
|
||||
|
@ -64,13 +64,13 @@ string(0) ""
|
||||
string(6) "testid"
|
||||
bool(true)
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
*** With lazy_write ***
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
*** Cleanup ***
|
||||
string(32) "%s"
|
||||
|
@ -344,7 +344,7 @@ ob_end_flush();
|
||||
<input type="text" name="test1"></input>
|
||||
<input type="text" name="test2" />
|
||||
</form>
|
||||
NULL
|
||||
bool(true)
|
||||
*** Cleanup ***
|
||||
bool(true)
|
||||
string(6) "testid"
|
||||
|
@ -439,7 +439,7 @@ ob_end_flush();
|
||||
<input type="text" name="test2" />
|
||||
</form>
|
||||
|
||||
NULL
|
||||
bool(true)
|
||||
*** Cleanup ***
|
||||
bool(true)
|
||||
string(6) "testid"
|
||||
|
@ -32,6 +32,8 @@ int(180)
|
||||
int(180)
|
||||
int(1234567890)
|
||||
bool(true)
|
||||
|
||||
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
|
||||
int(180)
|
||||
bool(true)
|
||||
int(180)
|
||||
|
@ -34,6 +34,8 @@ int(360)
|
||||
int(360)
|
||||
int(1234567890)
|
||||
bool(true)
|
||||
|
||||
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 17
|
||||
int(180)
|
||||
bool(true)
|
||||
int(180)
|
||||
|
@ -33,6 +33,8 @@ int(360)
|
||||
int(360)
|
||||
int(1234567890)
|
||||
bool(true)
|
||||
|
||||
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 18
|
||||
int(180)
|
||||
bool(true)
|
||||
int(180)
|
||||
|
@ -38,6 +38,8 @@ string(3) "180"
|
||||
int(180)
|
||||
string(10) "1234567890"
|
||||
bool(true)
|
||||
|
||||
Warning: session_cache_expire(): Cannot change cache expire when session is active in %s on line 19
|
||||
int(1234567890)
|
||||
string(10) "1234567890"
|
||||
bool(true)
|
||||
|
@ -15,28 +15,28 @@ ob_start();
|
||||
|
||||
echo "*** Testing session_cache_limiter() : basic functionality ***\n";
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_cache_limiter("public"));
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_start());
|
||||
var_dump(session_destroy());
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_cache_limiter("private"));
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_start());
|
||||
var_dump(session_destroy());
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_cache_limiter("nocache"));
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_start());
|
||||
var_dump(session_destroy());
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_cache_limiter("private_no_expire"));
|
||||
var_dump(session_cache_limiter());
|
||||
var_dump(session_start());
|
||||
var_dump(session_destroy());
|
||||
|
||||
echo "Done";
|
||||
@ -44,7 +44,6 @@ ob_end_flush();
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing session_cache_limiter() : basic functionality ***
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
string(7) "nocache"
|
||||
string(6) "public"
|
||||
@ -64,5 +63,5 @@ string(7) "nocache"
|
||||
string(7) "nocache"
|
||||
string(17) "private_no_expire"
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -32,10 +32,15 @@ ob_end_flush();
|
||||
*** Testing session_cache_limiter() : variation ***
|
||||
string(7) "nocache"
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
string(7) "nocache"
|
||||
string(6) "public"
|
||||
bool(true)
|
||||
string(6) "public"
|
||||
Done
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 15
|
||||
bool(false)
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
|
||||
bool(false)
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
|
||||
bool(false)
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
Done
|
||||
|
@ -31,10 +31,15 @@ ob_end_flush();
|
||||
*** Testing session_cache_limiter() : variation ***
|
||||
string(7) "nocache"
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
string(7) "nocache"
|
||||
string(6) "public"
|
||||
bool(true)
|
||||
string(6) "public"
|
||||
Done
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
|
||||
bool(false)
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 17
|
||||
bool(false)
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 18
|
||||
bool(false)
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
Done
|
||||
|
@ -31,9 +31,10 @@ ob_end_flush();
|
||||
string(7) "nocache"
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
string(7) "nocache"
|
||||
string(6) "public"
|
||||
bool(true)
|
||||
string(6) "public"
|
||||
Done
|
||||
|
||||
Warning: session_cache_limiter(): Cannot change cache limiter when session is active in %s on line 16
|
||||
bool(false)
|
||||
string(7) "nocache"
|
||||
bool(true)
|
||||
string(7) "nocache"
|
||||
Done
|
||||
|
@ -32,7 +32,7 @@ ob_end_flush();
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -96,75 +96,122 @@ ob_end_flush();
|
||||
*** Testing session_commit() : error functionality ***
|
||||
|
||||
-- Iteration 1 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 2 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 3 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 4 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 5 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 6 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 7 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 8 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 9 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 10 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 11 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 12 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 13 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 14 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 15 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 16 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 17 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 18 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 19 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 20 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 21 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 22 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 23 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: session_commit() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
Done
|
||||
|
||||
|
@ -30,12 +30,11 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_commit() : variation ***
|
||||
bool(true)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -38,19 +38,19 @@ ob_end_flush();
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -30,7 +30,7 @@ ob_end_flush();
|
||||
*** Testing session_commit() : variation ***
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -45,16 +45,16 @@ string(1) "0"
|
||||
string(0) ""
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
@ -49,19 +49,19 @@ string(0) ""
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
NULL
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
string(32) "%s"
|
||||
bool(true)
|
||||
|
@ -35,7 +35,7 @@ Warning: session_encode(): Cannot encode non-existent session in %s on line %d
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(false)
|
||||
NULL
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(false)
|
||||
|
@ -44,7 +44,7 @@ array(5) {
|
||||
["httponly"]=>
|
||||
bool(false)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(5) {
|
||||
["lifetime"]=>
|
||||
int(3600)
|
||||
@ -57,7 +57,7 @@ array(5) {
|
||||
["httponly"]=>
|
||||
bool(false)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(5) {
|
||||
["lifetime"]=>
|
||||
int(1234567890)
|
||||
|
182
ext/session/tests/session_ini_set.phpt
Normal file
182
ext/session/tests/session_ini_set.phpt
Normal file
@ -0,0 +1,182 @@
|
||||
--TEST--
|
||||
Test ini_set() for session : basic functionality
|
||||
--SKIPIF--
|
||||
<?php include('skipif.inc'); ?>
|
||||
--INI--
|
||||
session.save_path=
|
||||
session.name="PHPSESSID"
|
||||
session.save_handler="files"
|
||||
session.auto_start="0"
|
||||
session.gc_probability="1"
|
||||
session.gc_divisor="100"
|
||||
session.gc_maxlifetime="1440"
|
||||
session.serialize_handler="php"
|
||||
session.cookie_path="/"
|
||||
session.cookie_domain=""
|
||||
session.cookie_secure="0"
|
||||
session.cookie_httponly="0"
|
||||
session.use_cookies="1"
|
||||
session.use_only_cookies="1"
|
||||
session.use_strict_mode="0"
|
||||
session.referer_check=""
|
||||
session.cache_limiter="nocache"
|
||||
session.cache_expire="180"
|
||||
session.use_trans_sid="0"
|
||||
session.sid_length="32"
|
||||
session.sid_bits_per_character="4"
|
||||
session.lazy_write="1"
|
||||
--FILE--
|
||||
<?php
|
||||
ob_start();
|
||||
|
||||
/*
|
||||
* Prototype : string ini_set(string $name, string $value)
|
||||
* Description : Set session ini
|
||||
* Source code : ext/session/session.c
|
||||
*/
|
||||
|
||||
echo "*** Testing ini_set() for session ini: basic functionality ***\n";
|
||||
|
||||
var_dump(ini_set("session.save_path", ""));
|
||||
var_dump(ini_set("session.name", "PHPSESSID"));
|
||||
var_dump(ini_set("session.save_handler", "files"));
|
||||
var_dump(ini_set("session.auto_start", "0"));
|
||||
var_dump(ini_set("session.gc_probability", "1"));
|
||||
var_dump(ini_set("session.gc_divisor", "100"));
|
||||
var_dump(ini_set("session.gc_maxlifetime", "1440"));
|
||||
var_dump(ini_set("session.serialize_handler", "php"));
|
||||
var_dump(ini_set("session.cookie_path", "/"));
|
||||
var_dump(ini_set("session.cookie_domain", ""));
|
||||
var_dump(ini_set("session.cookie_secure", "0"));
|
||||
var_dump(ini_set("session.cookie_httponly", "0"));
|
||||
var_dump(ini_set("session.use_cookies", "1"));
|
||||
var_dump(ini_set("session.use_only_cookies", "1"));
|
||||
var_dump(ini_set("session.use_strict_mode", "0"));
|
||||
var_dump(ini_set("session.referer_check", ""));
|
||||
var_dump(ini_set("session.cache_limiter", "nocache"));
|
||||
var_dump(ini_set("session.cache_expire", "180"));
|
||||
var_dump(ini_set("session.use_trans_sid", "0"));
|
||||
var_dump(ini_set("session.sid_length", "32"));
|
||||
var_dump(ini_set("session.sid_bits_per_character", "4"));
|
||||
var_dump(ini_set("session.lazy_write", "1"));
|
||||
|
||||
session_start();
|
||||
var_dump("session started");
|
||||
|
||||
var_dump(ini_set("session.save_path", ""));
|
||||
var_dump(ini_set("session.name", "PHPSESSID"));
|
||||
var_dump(ini_set("session.save_handler", "files"));
|
||||
var_dump(ini_set("session.auto_start", "0"));
|
||||
var_dump(ini_set("session.gc_probability", "1"));
|
||||
var_dump(ini_set("session.gc_divisor", "100"));
|
||||
var_dump(ini_set("session.gc_maxlifetime", "1440"));
|
||||
var_dump(ini_set("session.serialize_handler", "php"));
|
||||
var_dump(ini_set("session.cookie_path", "/"));
|
||||
var_dump(ini_set("session.cookie_domain", ""));
|
||||
var_dump(ini_set("session.cookie_secure", "0"));
|
||||
var_dump(ini_set("session.cookie_httponly", "0"));
|
||||
var_dump(ini_set("session.use_cookies", "1"));
|
||||
var_dump(ini_set("session.use_only_cookies", "1"));
|
||||
var_dump(ini_set("session.use_strict_mode", "0"));
|
||||
var_dump(ini_set("session.referer_check", ""));
|
||||
var_dump(ini_set("session.cache_limiter", "nocache"));
|
||||
var_dump(ini_set("session.cache_expire", "180"));
|
||||
var_dump(ini_set("session.use_trans_sid", "0"));
|
||||
var_dump(ini_set("session.sid_length", "32"));
|
||||
var_dump(ini_set("session.sid_bits_per_character", "4"));
|
||||
var_dump(ini_set("session.lazy_write", "1"));
|
||||
|
||||
|
||||
echo "Done";
|
||||
ob_end_flush();
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing ini_set() for session ini: basic functionality ***
|
||||
string(0) ""
|
||||
string(9) "PHPSESSID"
|
||||
string(5) "files"
|
||||
bool(false)
|
||||
string(1) "1"
|
||||
string(3) "100"
|
||||
string(4) "1440"
|
||||
string(3) "php"
|
||||
string(1) "/"
|
||||
string(0) ""
|
||||
string(1) "0"
|
||||
string(1) "0"
|
||||
string(1) "1"
|
||||
string(1) "1"
|
||||
string(1) "0"
|
||||
string(0) ""
|
||||
string(7) "nocache"
|
||||
string(3) "180"
|
||||
string(1) "0"
|
||||
string(2) "32"
|
||||
string(1) "4"
|
||||
string(1) "1"
|
||||
string(15) "session started"
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 38
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 39
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 40
|
||||
bool(false)
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 42
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 43
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 44
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 45
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 46
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 47
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 48
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 49
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 50
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 51
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 52
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 53
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 54
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 55
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 56
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 57
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 58
|
||||
bool(false)
|
||||
|
||||
Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time in %s on line 59
|
||||
bool(false)
|
||||
Done
|
@ -38,14 +38,14 @@ ob_end_flush();
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing session_module_name() : variation ***
|
||||
string(%d) "%s"
|
||||
string(5) "files"
|
||||
string(4) "user"
|
||||
|
||||
Warning: Uncaught Exception: Stop...! in %s:%d
|
||||
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 25
|
||||
|
||||
Fatal error: Uncaught Exception: Stop...! in %s:13
|
||||
Stack trace:
|
||||
#0 [internal function]: open('', 'PHPSESSID')
|
||||
#1 %s(%d): session_start()
|
||||
#1 %s(25): session_start()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
||||
|
||||
Fatal error: session_start(): Failed to initialize storage module: %s in %s%esession_module_name_variation3.php on line %d
|
||||
thrown in %s on line 13
|
||||
|
@ -51,7 +51,7 @@ array(3) {
|
||||
["Guff"]=>
|
||||
int(1234567890)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(3) {
|
||||
["Blah"]=>
|
||||
string(12) "Hello World!"
|
||||
|
@ -84,7 +84,6 @@ $inputs = array(
|
||||
/*24*/ $fp
|
||||
);
|
||||
|
||||
session_start();
|
||||
|
||||
$iterator = 1;
|
||||
foreach($inputs as $input) {
|
||||
@ -93,7 +92,6 @@ foreach($inputs as $input) {
|
||||
$iterator++;
|
||||
};
|
||||
|
||||
session_destroy();
|
||||
fclose($fp);
|
||||
echo "Done";
|
||||
ob_end_flush();
|
||||
|
@ -11,21 +11,25 @@ session.name=PHPSESSID
|
||||
|
||||
ob_start();
|
||||
|
||||
/*
|
||||
/*
|
||||
* Prototype : string session_save_path([string $path])
|
||||
* Description : Get and/or set the current session save path
|
||||
* Source code : ext/session/session.c
|
||||
* Source code : ext/session/session.c
|
||||
*/
|
||||
|
||||
echo "*** Testing session_save_path() : variation ***\n";
|
||||
|
||||
$directory = dirname(__FILE__);
|
||||
var_dump(session_save_path());
|
||||
var_dump(session_save_path($directory));
|
||||
var_dump(session_save_path());
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(session_save_path());
|
||||
var_dump(session_save_path($directory));
|
||||
var_dump(session_save_path());
|
||||
var_dump(session_destroy());
|
||||
|
||||
var_dump(session_save_path());
|
||||
|
||||
echo "Done";
|
||||
@ -34,11 +38,18 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_save_path() : variation ***
|
||||
string(0) ""
|
||||
bool(true)
|
||||
string(0) ""
|
||||
string(0) ""
|
||||
string(%d) "%s"
|
||||
string(%d) "%stests"
|
||||
bool(true)
|
||||
string(%d) "%s"
|
||||
Done
|
||||
|
||||
Warning: session_save_path(): Cannot change save path when session is active in %s on line 19
|
||||
bool(false)
|
||||
|
||||
Warning: session_save_path(): Cannot change save path when session is active in %s on line 20
|
||||
bool(false)
|
||||
|
||||
Warning: session_save_path(): Cannot change save path when session is active in %s on line 21
|
||||
bool(false)
|
||||
bool(true)
|
||||
string(%d) "%stests"
|
||||
Done
|
||||
|
@ -51,9 +51,17 @@ var_dump(rmdir($sessions));
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
Warning: ini_set(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d
|
||||
Warning: ini_set(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line 24
|
||||
string(0) ""
|
||||
|
||||
Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d
|
||||
Warning: session_start(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line 26
|
||||
|
||||
Fatal error: session_start(): Failed to initialize storage module: files (path: ) in %s on line %d
|
||||
Warning: session_start(): Failed to initialize storage module: files (path: ) in %s on line 26
|
||||
bool(false)
|
||||
string(0) ""
|
||||
|
||||
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line 28
|
||||
bool(false)
|
||||
string(0) ""
|
||||
bool(true)
|
||||
Done
|
||||
|
@ -26,10 +26,11 @@ ob_end_flush();
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : basic functionality ***
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
Done
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 15
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
||||
|
@ -100,207 +100,210 @@ ob_end_flush();
|
||||
*** Testing session_set_cookie_params() : error functionality ***
|
||||
|
||||
-- Iteration 1 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 2 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 3 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 4 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line 81
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 5 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 6 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line 81
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 7 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 8 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 9 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 10 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 11 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 12 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 13 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 14 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 15 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 16 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 17 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 18 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 19 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 20 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 21 --
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 4 to be boolean, object given in %s on line 84
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 4 to be boolean, object given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 5 to be boolean, object given in %s on line %d
|
||||
NULL
|
||||
Warning: session_set_cookie_params() expects parameter 5 to be boolean, object given in %s on line 85
|
||||
NULL
|
||||
bool(true)
|
||||
|
||||
-- Iteration 22 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 23 --
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
-- Iteration 24 --
|
||||
bool(true)
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 2 to be string, resource given in %s on line 82
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 2 to be string, resource given in %s on line %d
|
||||
Warning: session_set_cookie_params() expects parameter 3 to be string, resource given in %s on line 83
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 3 to be string, resource given in %s on line %d
|
||||
Warning: session_set_cookie_params() expects parameter 4 to be boolean, resource given in %s on line 84
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 4 to be boolean, resource given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: session_set_cookie_params() expects parameter 5 to be boolean, resource given in %s on line %d
|
||||
NULL
|
||||
Warning: session_set_cookie_params() expects parameter 5 to be boolean, resource given in %s on line 85
|
||||
NULL
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -20,11 +20,13 @@ echo "*** Testing session_set_cookie_params() : variation ***\n";
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
var_dump(session_set_cookie_params(3600));
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
|
||||
var_dump(session_start());
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
var_dump(session_set_cookie_params(1800));
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
var_dump(session_destroy());
|
||||
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
var_dump(session_set_cookie_params(1234567890));
|
||||
var_dump(ini_get("session.cookie_lifetime"));
|
||||
@ -35,15 +37,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : variation ***
|
||||
string(4) "3600"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "3600"
|
||||
bool(true)
|
||||
string(4) "3600"
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 19
|
||||
bool(false)
|
||||
string(4) "3600"
|
||||
bool(true)
|
||||
string(4) "3600"
|
||||
NULL
|
||||
string(4) "1800"
|
||||
bool(true)
|
||||
string(4) "1800"
|
||||
NULL
|
||||
string(10) "1234567890"
|
||||
Done
|
||||
|
||||
|
@ -35,15 +35,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : variation ***
|
||||
string(5) "/path"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "/foo"
|
||||
bool(true)
|
||||
string(4) "/foo"
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
|
||||
bool(false)
|
||||
string(4) "/foo"
|
||||
bool(true)
|
||||
string(4) "/foo"
|
||||
NULL
|
||||
string(5) "/blah"
|
||||
bool(true)
|
||||
string(5) "/blah"
|
||||
NULL
|
||||
string(5) "/guff"
|
||||
Done
|
||||
|
||||
|
@ -35,15 +35,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : variation ***
|
||||
string(3) "foo"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "blah"
|
||||
bool(true)
|
||||
string(4) "blah"
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
|
||||
bool(false)
|
||||
string(4) "blah"
|
||||
bool(true)
|
||||
string(4) "blah"
|
||||
NULL
|
||||
string(4) "guff"
|
||||
bool(true)
|
||||
string(4) "guff"
|
||||
NULL
|
||||
string(3) "foo"
|
||||
Done
|
||||
|
||||
|
@ -35,15 +35,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : variation ***
|
||||
string(1) "1"
|
||||
NULL
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
|
||||
bool(false)
|
||||
string(1) "0"
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
NULL
|
||||
string(1) "1"
|
||||
bool(true)
|
||||
string(1) "1"
|
||||
NULL
|
||||
string(1) "0"
|
||||
Done
|
||||
|
||||
|
@ -35,15 +35,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_cookie_params() : variation ***
|
||||
string(1) "1"
|
||||
NULL
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
|
||||
Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in %s on line 18
|
||||
bool(false)
|
||||
string(1) "0"
|
||||
bool(true)
|
||||
string(1) "0"
|
||||
NULL
|
||||
string(1) "1"
|
||||
bool(true)
|
||||
string(1) "1"
|
||||
NULL
|
||||
string(1) "0"
|
||||
Done
|
||||
|
||||
|
@ -50,7 +50,7 @@ Warning: SessionHandler::close(): Parent session handler is not open in %ssessio
|
||||
|
||||
Warning: session_start(): Failed to read session data: user (%s) in %ssession_set_save_handler_class_005.php on line %d
|
||||
bool(false)
|
||||
string(%d) "%s"
|
||||
string(0) ""
|
||||
string(4) "user"
|
||||
array(0) {
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ Warning: SessionHandler::close(): Parent session handler is not open in %s on li
|
||||
|
||||
Warning: session_start(): Failed to read session data: user (%s) in %s on line %d
|
||||
bool(false)
|
||||
string(%d) "%s"
|
||||
string(0) ""
|
||||
string(5) "files"
|
||||
string(4) "user"
|
||||
int(2)
|
||||
|
@ -34,11 +34,11 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_save_handler() : error functionality ***
|
||||
|
||||
Warning: Uncaught Exception: Do something bad..! in %s:%d
|
||||
Warning: session_start(): Failed to initialize storage module: user (path: ) in %s on line 23
|
||||
|
||||
Fatal error: Uncaught Exception: Do something bad..! in %s:13
|
||||
Stack trace:
|
||||
#0 [internal function]: open('', 'PHPSESSID')
|
||||
#1 %s(%d): session_start()
|
||||
#1 %s(23): session_start()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
||||
|
||||
Fatal error: session_start(): Failed to initialize storage module: %s in %ssession_set_save_handler_error3.php on line %d
|
||||
thrown in %s on line 13
|
||||
|
@ -28,6 +28,8 @@ ob_end_flush();
|
||||
*** Testing session_set_save_handler() : variation ***
|
||||
|
||||
bool(true)
|
||||
|
||||
Warning: session_set_save_handler(): Cannot change save handler when session is active in %s on line 17
|
||||
bool(false)
|
||||
bool(true)
|
||||
|
||||
|
@ -19,6 +19,7 @@ echo "*** Testing session_set_save_handler() : variation ***\n";
|
||||
|
||||
require_once "save_handler.inc";
|
||||
$path = dirname(__FILE__);
|
||||
var_dump(session_status());
|
||||
session_save_path($path);
|
||||
var_dump(session_set_save_handler("open", "close", "read", "write", "destroy", "gc"));
|
||||
var_dump(session_destroy());
|
||||
@ -28,6 +29,10 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_set_save_handler() : variation ***
|
||||
|
||||
int(2)
|
||||
|
||||
Warning: session_save_path(): Cannot change save path when session is active in %s on line 16
|
||||
|
||||
Warning: session_set_save_handler(): Cannot change save handler when session is active in %s on line 17
|
||||
bool(false)
|
||||
bool(true)
|
||||
|
||||
|
@ -65,7 +65,7 @@ array(3) {
|
||||
}
|
||||
Write [%s,%s,Blah|s:12:"Hello World!";Foo|b:0;Guff|i:1234567890;]
|
||||
Close [%s,PHPSESSID]
|
||||
NULL
|
||||
bool(true)
|
||||
Open [%s,PHPSESSID]
|
||||
Read [%s,%s]
|
||||
GC [0]
|
||||
|
@ -69,7 +69,7 @@ bool(true)
|
||||
string(%d) "PHPT-%d"
|
||||
Write [%s,PHPT-%d,]
|
||||
Close [%s,PHPSESSID]
|
||||
NULL
|
||||
bool(true)
|
||||
string(%d) "PHPT-%d"
|
||||
*** With lazy_write ***
|
||||
string(%d) "PHPT-%d"
|
||||
@ -82,7 +82,7 @@ GC [0]
|
||||
bool(true)
|
||||
Write [%s,PHPT-%d,]
|
||||
Close [%s,PHPSESSID]
|
||||
NULL
|
||||
bool(true)
|
||||
string(%d) "PHPT-%d"
|
||||
*** Cleanup ***
|
||||
string(%d) "PHPT-%d"
|
||||
|
@ -29,16 +29,15 @@ ob_end_flush();
|
||||
*** Testing session_start() : variation ***
|
||||
bool(true)
|
||||
|
||||
Notice: A session had already been started - ignoring session_start() in %s on line %d
|
||||
Notice: session_start(): A session had already been started - ignoring in %s on line 14
|
||||
bool(true)
|
||||
|
||||
Notice: A session had already been started - ignoring session_start() in %s on line %d
|
||||
Notice: session_start(): A session had already been started - ignoring in %s on line 15
|
||||
bool(true)
|
||||
|
||||
Notice: A session had already been started - ignoring session_start() in %s on line %d
|
||||
Notice: session_start(): A session had already been started - ignoring in %s on line 16
|
||||
bool(true)
|
||||
|
||||
Notice: A session had already been started - ignoring session_start() in %s on line %d
|
||||
Notice: session_start(): A session had already been started - ignoring in %s on line 17
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -33,17 +33,16 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_start() : variation ***
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
||||
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line %d
|
||||
Warning: session_destroy(): Trying to destroy uninitialized session in %s on line 23
|
||||
bool(false)
|
||||
Done
|
||||
|
||||
|
@ -43,7 +43,7 @@ array(4) {
|
||||
["age"]=>
|
||||
int(6)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(4) {
|
||||
["colour"]=>
|
||||
string(5) "green"
|
||||
|
@ -44,7 +44,7 @@ array(4) {
|
||||
["age"]=>
|
||||
int(6)
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(4) {
|
||||
["colour"]=>
|
||||
string(5) "green"
|
||||
|
@ -30,10 +30,9 @@ ob_end_flush();
|
||||
*** Testing session_start() : variation ***
|
||||
string(%d) "%s"
|
||||
|
||||
Notice: A session had already been started - ignoring session_start() in %s on line %d
|
||||
Notice: session_start(): A session had already been started - ignoring in %s on line 14
|
||||
bool(true)
|
||||
string(%d) "%s"
|
||||
bool(true)
|
||||
string(0) ""
|
||||
Done
|
||||
|
||||
|
@ -33,7 +33,7 @@ array(1) {
|
||||
["foo"]=>
|
||||
string(12) "Hello World!"
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -96,75 +96,122 @@ ob_end_flush();
|
||||
*** Testing session_unset() : error functionality ***
|
||||
|
||||
-- Iteration 1 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 2 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 3 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 4 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 6 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 7 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 8 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 9 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 10 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 11 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 12 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 13 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 14 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 15 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 16 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 17 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 18 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 19 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 20 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 21 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 22 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 23 --
|
||||
bool(false)
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 24 --
|
||||
bool(false)
|
||||
Done
|
||||
|
||||
Warning: session_unset() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
Done
|
||||
|
@ -32,7 +32,7 @@ ob_end_flush();
|
||||
*** Testing session_unset() : variation ***
|
||||
bool(false)
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
string(12) "Hello World!"
|
||||
|
@ -32,7 +32,7 @@ ob_end_flush();
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -96,75 +96,122 @@ ob_end_flush();
|
||||
*** Testing session_write_close() : error functionality ***
|
||||
|
||||
-- Iteration 1 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 2 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 3 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 4 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 5 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 6 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 7 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 8 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 9 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 10 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 11 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 12 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 13 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 14 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 15 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 16 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 17 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 18 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 19 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 20 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 21 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 22 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 23 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: session_write_close() expects exactly 0 parameters, 1 given in %s on line 82
|
||||
NULL
|
||||
Done
|
||||
|
||||
|
@ -30,12 +30,11 @@ ob_end_flush();
|
||||
--EXPECTF--
|
||||
*** Testing session_write_close() : variation ***
|
||||
bool(true)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
bool(true)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -38,22 +38,21 @@ ob_end_flush();
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
bool(true)
|
||||
Done
|
||||
|
||||
|
@ -30,7 +30,7 @@ ob_end_flush();
|
||||
*** Testing session_write_close() : variation ***
|
||||
array(0) {
|
||||
}
|
||||
NULL
|
||||
bool(true)
|
||||
array(0) {
|
||||
}
|
||||
bool(true)
|
||||
|
@ -41,15 +41,15 @@ ob_end_flush();
|
||||
string(0) ""
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
NULL
|
||||
bool(true)
|
||||
string(4) "test"
|
||||
bool(true)
|
||||
bool(true)
|
||||
|
Loading…
Reference in New Issue
Block a user