23#define PHP_SESSION_API 20161017
26#define PHP_SESSION_VERSION PHP_VERSION
29#define PS_OPEN_ARGS void **mod_data, const char *save_path, const char *session_name
30#define PS_CLOSE_ARGS void **mod_data
31#define PS_READ_ARGS void **mod_data, zend_string *key, zend_string **val, zend_long maxlifetime
32#define PS_WRITE_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
33#define PS_DESTROY_ARGS void **mod_data, zend_string *key
34#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, zend_long *nrdels
35#define PS_CREATE_SID_ARGS void **mod_data
36#define PS_VALIDATE_SID_ARGS void **mod_data, zend_string *key
37#define PS_UPDATE_TIMESTAMP_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime
52#define PS_GET_MOD_DATA() *mod_data
53#define PS_SET_MOD_DATA(a) *mod_data = (a)
55#define PS_OPEN_FUNC(x) zend_result ps_open_##x(PS_OPEN_ARGS)
56#define PS_CLOSE_FUNC(x) zend_result ps_close_##x(PS_CLOSE_ARGS)
57#define PS_READ_FUNC(x) zend_result ps_read_##x(PS_READ_ARGS)
58#define PS_WRITE_FUNC(x) zend_result ps_write_##x(PS_WRITE_ARGS)
59#define PS_DESTROY_FUNC(x) zend_result ps_delete_##x(PS_DESTROY_ARGS)
60#define PS_GC_FUNC(x) zend_long ps_gc_##x(PS_GC_ARGS)
61#define PS_CREATE_SID_FUNC(x) zend_string *ps_create_sid_##x(PS_CREATE_SID_ARGS)
62#define PS_VALIDATE_SID_FUNC(x) zend_result ps_validate_sid_##x(PS_VALIDATE_SID_ARGS)
63#define PS_UPDATE_TIMESTAMP_FUNC(x) zend_result ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS)
76 #x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
77 ps_delete_##x, ps_gc_##x, php_session_create_id, \
78 php_session_validate_sid, php_session_update_timestamp
81#define PS_FUNCS_SID(x) \
88 PS_CREATE_SID_FUNC(x); \
89 PS_VALIDATE_SID_FUNC(x); \
90 PS_UPDATE_TIMESTAMP_FUNC(x);
92#define PS_MOD_SID(x) \
93 #x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
94 ps_delete_##x, ps_gc_##x, ps_create_sid_##x, \
95 php_session_validate_sid, php_session_update_timestamp
99#define PS_FUNCS_UPDATE_TIMESTAMP(x) \
104 PS_DESTROY_FUNC(x); \
106 PS_CREATE_SID_FUNC(x); \
107 PS_VALIDATE_SID_FUNC(x); \
108 PS_UPDATE_TIMESTAMP_FUNC(x);
110#define PS_MOD_UPDATE_TIMESTAMP(x) \
111 #x, ps_open_##x, ps_close_##x, ps_read_##x, ps_write_##x, \
112 ps_delete_##x, ps_gc_##x, ps_create_sid_##x, \
113 ps_validate_sid_##x, ps_update_timestamp_##x
211#define phpext_session_ptr &session_module_entry
214#define PS(v) ZEND_TSRMG(ps_globals_id, php_ps_globals *, v)
215#ifdef COMPILE_DL_SESSION
219#define PS(v) (ps_globals.v)
222#define PS_SERIALIZER_ENCODE_ARGS void
223#define PS_SERIALIZER_DECODE_ARGS const char *val, size_t vallen
231#define PS_SERIALIZER_ENCODE_NAME(x) ps_srlzr_encode_##x
232#define PS_SERIALIZER_DECODE_NAME(x) ps_srlzr_decode_##x
234#define PS_SERIALIZER_ENCODE_FUNC(x) \
235 zend_string *PS_SERIALIZER_ENCODE_NAME(x)(PS_SERIALIZER_ENCODE_ARGS)
236#define PS_SERIALIZER_DECODE_FUNC(x) \
237 zend_result PS_SERIALIZER_DECODE_NAME(x)(PS_SERIALIZER_DECODE_ARGS)
239#define PS_SERIALIZER_FUNCS(x) \
240 PS_SERIALIZER_ENCODE_FUNC(x); \
241 PS_SERIALIZER_DECODE_FUNC(x)
243#define PS_SERIALIZER_ENTRY(x) \
244 { #x, PS_SERIALIZER_ENCODE_NAME(x), PS_SERIALIZER_DECODE_NAME(x) }
276#define PS_ADD_VARL(name) do { \
277 php_add_session_var(name); \
280#define PS_ADD_VAR(name) PS_ADD_VARL(name)
282#define PS_DEL_VARL(name) do { \
283 if (!Z_ISNULL(PS(http_session_vars))) { \
284 zend_hash_del(Z_ARRVAL(PS(http_session_vars)), name); \
289#define PS_ENCODE_VARS \
291 zend_ulong num_key; \
296#define PS_ENCODE_LOOP(code) do { \
299 ZVAL_COPY(&_zv, Z_REFVAL(PS(http_session_vars))); \
300 HashTable *_ht = Z_ARRVAL(_zv); \
301 ZEND_HASH_FOREACH_KEY(_ht, num_key, key) { \
303 php_error_docref(NULL, E_WARNING, \
304 "Skipping numeric key " ZEND_LONG_FMT, num_key);\
307 if ((struc = php_get_session_var(key))) { \
310 } ZEND_HASH_FOREACH_END(); \
311 zval_ptr_dtor(&_zv); \
316void php_session_auto_start(
void *
data);
struct _php_random_status_state_pcgoneseq128xslrr64 php_random_status_state_pcgoneseq128xslrr64
struct _php_random_algo_with_state php_random_algo_with_state
unsigned char key[REFLECTION_KEY_LEN]
zend_module_entry session_module_entry
PHPAPI zend_result php_session_destroy(void)
PHPAPI zval * php_set_session_var(zend_string *name, zval *state_val, php_unserialize_data_t *var_hash)
PHPAPI zend_class_entry * php_session_update_timestamp_iface_entry
PHPAPI php_session_status php_get_session_status(void)
PHPAPI zend_result php_session_valid_key(const char *key)
#define PS_VALIDATE_SID_ARGS
PHPAPI zend_result php_session_register_module(const ps_module *)
PHPAPI void session_adapt_url(const char *url, size_t url_len, char **new_url, size_t *new_len)
#define PS_CREATE_SID_ARGS
struct ps_module_struct ps_module
#define PS_UPDATE_TIMESTAMP_ARGS
PHPAPI zend_result php_session_reset_id(void)
PHPAPI void php_add_session_var(zend_string *name)
PHPAPI zval * php_get_session_var(zend_string *name)
php_ps_globals zend_ps_globals
PHPAPI zend_result php_session_register_serializer(const char *name, zend_string *(*encode)(PS_SERIALIZER_ENCODE_ARGS), zend_result(*decode)(PS_SERIALIZER_DECODE_ARGS))
PHPAPI zend_result php_session_update_timestamp(PS_UPDATE_TIMESTAMP_ARGS)
struct ps_serializer_struct ps_serializer
PHPAPI zend_result php_session_flush(int write)
PHPAPI const ps_serializer * _php_find_ps_serializer(const char *name)
PHPAPI zend_result php_session_start(void)
#define PS_SERIALIZER_DECODE_ARGS
PHPAPI zend_class_entry * php_session_iface_entry
struct _php_session_rfc1867_progress php_session_rfc1867_progress
PHPAPI const ps_module * _php_find_ps_module(const char *name)
PHPAPI zval * php_get_session_var_str(const char *name, size_t name_len)
PHPAPI zend_result php_session_validate_sid(PS_VALIDATE_SID_ARGS)
struct _php_ps_globals php_ps_globals
PHPAPI zend_class_entry * php_session_class_entry
PHPAPI zend_class_entry * php_session_id_iface_entry
PHPAPI zend_string * php_session_create_id(PS_CREATE_SID_ARGS)
#define PS_SERIALIZER_ENCODE_ARGS
struct php_unserialize_data * php_unserialize_data_t
php_unserialize_data_t var_hash
php_session_rfc1867_progress * rfc1867_progress
zend_string * mod_user_class_name
php_random_algo_with_state random
const struct ps_serializer_struct * serializer
bool mod_user_implemented
char * extern_referer_chk
php_random_status_state_pcgoneseq128xslrr64 random_state
php_session_status session_status
zend_string * session_started_filename
zend_long sid_bits_per_character
const ps_module * default_mod
uint32_t session_started_lineno
zend_string * session_vars
struct _php_ps_globals::@135015107061025277277325020140351335114020303156 mod_user_names
zend_long cookie_lifetime
zval * current_file_bytes_processed
zval * post_bytes_processed
zend_result(* s_close)(PS_CLOSE_ARGS)
zend_result(* s_validate_sid)(PS_VALIDATE_SID_ARGS)
zend_long(* s_gc)(PS_GC_ARGS)
zend_result(* s_destroy)(PS_DESTROY_ARGS)
zend_result(* s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS)
zend_result(* s_open)(PS_OPEN_ARGS)
zend_result(* s_write)(PS_WRITE_ARGS)
zend_result(* s_read)(PS_READ_ARGS)
zend_result(* decode)(PS_SERIALIZER_DECODE_ARGS)
#define ZEND_TSRMLS_CACHE_EXTERN()
#define ZEND_EXTERN_MODULE_GLOBALS(module_name)
struct _zend_string zend_string
struct _zend_module_entry zend_module_entry
struct _zend_class_entry zend_class_entry
ZEND_RESULT_CODE zend_result