25static void php_url_encode_scalar(
zval *scalar,
smart_str *form_str,
27 const char *index_string,
size_t index_string_len,
28 const char *num_prefix,
size_t num_prefix_len,
33 smart_str_append(form_str, arg_sep);
37 smart_str_append(form_str, key_prefix);
46 smart_str_append(form_str, encoded_key);
47 zend_string_free(encoded_key);
51 smart_str_appendl(form_str, num_prefix, num_prefix_len);
53 smart_str_append_long(form_str, index_int);
56 smart_str_appendl(form_str,
"%5D",
strlen(
"%5D"));
58 smart_str_appendc(form_str,
'=');
69 smart_str_append(form_str, encoded_data);
70 zend_string_free(encoded_data);
74 smart_str_append_long(form_str,
Z_LVAL_P(scalar));
84 smart_str_append(form_str, encoded_data);
85 zend_string_free(tmp);
86 zend_string_free(encoded_data);
90 smart_str_appendc(form_str,
'0');
93 smart_str_appendc(form_str,
'1');
101 scalar = zend_enum_fetch_case_value(
Z_OBJ_P(scalar));
110 const char *num_prefix,
size_t num_prefix_len,
115 const char *prop_name;
127 arg_sep =
zend_ini_str(
"arg_separator.output",
strlen(
"arg_separator.output"),
false);
186 char *index_int_as_str;
187 size_t index_int_as_str_len;
191 if (key_prefix && num_prefix) {
193 size_t len =
ZSTR_LEN(key_prefix) + num_prefix_len + index_int_as_str_len +
strlen(
"%5D%5B");
194 new_prefix = zend_string_alloc(
len, 0);
198 memcpy(
ZSTR_VAL(new_prefix) +
ZSTR_LEN(key_prefix) + num_prefix_len, index_int_as_str, index_int_as_str_len);
201 }
else if (key_prefix) {
203 }
else if (num_prefix) {
204 new_prefix =
zend_string_concat3(num_prefix, num_prefix_len, index_int_as_str, index_int_as_str_len,
"%5B",
strlen(
"%5B"));
208 efree(index_int_as_str);
218 php_url_encode_scalar(zdata, formstr,
221 num_prefix, num_prefix_len,
235 size_t prefix_len = 0;
269 zend_string_release(errstr);
277 SG(request_parse_body_context).options_cache[cache_offset].set =
true;
278 SG(request_parse_body_context).options_cache[cache_offset].value =
result;
280 SG(request_parse_body_context).options_cache[cache_offset].set =
false;
300#define CHECK_OPTION(name) \
301 if (zend_string_equals_literal_ci(key, #name)) { \
302 if (cache_request_parse_body_option(options, value, REQUEST_PARSE_BODY_OPTION_ ## name) == FAILURE) { \
343 SG(request_parse_body_context).throw_exceptions =
true;
350 if (!
SG(request_info).content_type) {
356 if (!
SG(request_info).post_entry) {
361 zval post, files, old_post, old_files;
378 SG(request_parse_body_context).throw_exceptions =
false;
379 memset(&
SG(request_parse_body_context).options_cache, 0,
sizeof(
SG(request_parse_body_context).options_cache));
SAPI_API void sapi_read_post_data(void)
SAPI_API void sapi_handle_post(void *arg)
http_clear_last_response_headers()
http_get_last_response_headers()
request_parse_body(?array $options=null)
http_build_query(array|object $data, string $numeric_prefix="", ?string $arg_separator=null, int $encoding_type=PHP_QUERY_RFC1738)
memset(ptr, 0, type->size)
#define CHECK_OPTION(name)
PHPAPI void php_url_encode_hash_ex(HashTable *ht, smart_str *formstr, const char *num_prefix, size_t num_prefix_len, const zend_string *key_prefix, zval *type, const zend_string *arg_sep, int enc_type)
PHP_JSON_API size_t int options
unsigned char key[REFLECTION_KEY_LEN]
PHPAPI zend_string * php_raw_url_encode(char const *s, size_t len)
PHPAPI zend_string * php_url_encode(char const *s, size_t len)
#define PHP_QUERY_RFC3986
#define PHP_QUERY_RFC1738
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API ZEND_COLD void zend_value_error(const char *format,...)
ZEND_API ZEND_COLD void zend_error(int type, const char *format,...)
ZEND_API const char * zend_zval_value_name(const zval *arg)
ZEND_API ZEND_COLD void zend_argument_type_error(uint32_t arg_num, const char *format,...)
#define ZEND_PARSE_PARAMETERS_END()
#define Z_PARAM_ARRAY_HT_OR_NULL(dest)
#define Z_PARAM_STR_OR_NULL(dest)
#define zend_parse_parameters_none()
#define Z_PARAM_STRING(dest, dest_len)
#define ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args)
#define Z_PARAM_LONG(dest)
#define Z_PARAM_ARRAY_OR_OBJECT(dest)
exit(string|int $status=0)
zend_string_release_ex(func->internal_function.function_name, 0)
ZEND_API zend_result zend_unmangle_property_name_ex(const zend_string *name, const char **class_name, const char **prop_name, size_t *prop_len)
ZEND_API zend_class_entry * zend_ce_request_parse_body_exception
ZEND_API HashTable *ZEND_FASTCALL zend_new_pair(zval *val1, zval *val2)
#define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val)
#define ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val)
#define ZEND_HASH_FOREACH_END()
ZEND_API zend_long zend_ini_parse_quantity(zend_string *value, zend_string **errstr)
ZEND_API zend_string * zend_ini_str(const char *name, size_t name_length, bool orig)
struct _zend_string zend_string
ZEND_API zend_result zend_check_property_access(const zend_object *zobj, zend_string *prop_info_name, bool is_dynamic)
ZEND_API zend_string *ZEND_FASTCALL zend_double_to_str(double num)
#define EMPTY_SWITCH_DEFAULT_CASE()
#define UNEXPECTED(condition)
ZEND_API zend_string * zend_string_concat2(const char *str1, size_t str1_len, const char *str2, size_t str2_len)
ZEND_API zend_string * zend_string_concat3(const char *str1, size_t str1_len, const char *str2, size_t str2_len, const char *str3, size_t str3_len)
#define Z_STRVAL_P(zval_p)
#define Z_ISUNDEF_P(zval_p)
struct _zend_array HashTable
#define Z_STRLEN_P(zval_p)
#define GC_TRY_UNPROTECT_RECURSION(p)
#define Z_OBJCE_P(zval_p)
#define GC_TRY_PROTECT_RECURSION(p)
#define Z_INDIRECT_P(zval_p)
ZEND_RESULT_CODE zend_result
#define GC_IS_RECURSIVE(p)
#define ZVAL_COPY_VALUE(z, v)
ZEND_API void zval_ptr_dtor(zval *zval_ptr)