Пост-переменные исчезают.

  • Автор темы teenfibber
  • 32
  • Обновлено
  • 13, May 2024
  • #1
У меня есть вызов ajax, который отправляет два массива данных. Порталы и Незавершённые версии. Заголовки выглядят следующим образом:
 <IfModule mod_php7.c>

php_value max_input_vars 5000

</IfModule>
Код (разметка): в моем PHP-скрипте у меня есть

 $portals = filter_input(INPUT_POST, 'portals', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $stubs = filter_input(INPUT_POST, 'stubs', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);


Код (php): $portals всегда имеет список.

$stubs иногда имеет список, иногда он имеет значение NULL.

Даже если у меня нет данных, я всегда отправляю пустой массив, поэтому он никогда не должен быть NULL.

Когда я вывожу array_keys($_POST), иногда отображаются только заглушки, что заставляет меня думать, что это не проблема filter_input.

Я не вижу ничего, что указывало бы на причину сбоя $stubs.

Если я сохраню переменные сообщения в файл, его размер составит 192 КБ.

Настройки моего хостинга: post_max_size 8M (по умолчанию)

Так что это не должно быть проблемой.

Есть ли проблема с $_POST и массивами, о которой мне нужно знать?

Обычно, когда я пытаюсь внести всю необходимую информацию в запрос, я уже нахожу вещь, о которую споткнулся.

Не в этот раз.

Обычно я не работаю с такими большими объемами данных, но на самом деле это, конечно, не так уж и много.
РЕДАКТИРОВАТЬ: Я нашел своего виновника!

в моих настройках PHP у меня max_input_vars = 1000, что означает, что он удаляет большие части даже массива порталов, и это объясняет странную ошибку, с которой я не разобрался.

Поэтому, находясь на виртуальном хостинге, я не могу просто погрузиться в php.ini.

Я добавил это в свой .htaccess и буду следить за этим.

 portals[630][lat] -36.876755 portals[630][lng]: 174.767649 portals[630[photo]: [URL='https://lumtu.com/yti/YATTAYTRodHRwOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8zNG5sVEx2NXVlSWY0TmtzZ0p0NVh6cEVBQ0d3V1BDRnFqeWowbWdRTEpZU0puczAzLUxqekk2bnI3Znc2NGNneWZMZmdVMk90RG5QWUc1YTU4Q3h4ajZ6ja4']http://lh3.googleusercontent.com/34nlTLv5ueIf4NksgJt5XzpEACGwWPCFqjyj0mgQLJYSJns03-LjzI6nr7fw64cgyfLfgU2OtDnPYG5a58Cxxj6zLa4[/URL] portals[630][name]: Eden Garden portals[631][lat]: -36.873148 portals[631][lng]: 174.761531 portals[631][photo]: [URL='https://lumtu.com/yti/dyRRydHdodHRwOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS8zRXNMdWFlcy12WHJ2Qy1sZmNBNC12YTRsOHVvaUMzdUV5czI4cV83bmpiZk1TcFRLcmJMc2lTcnZCU0dBWUI4bE90UkdNR1NfLS1SMTBHc05TbFExUFxEF']http://lh3.googleusercontent.com/3EsLuaes-vXrvC-lfcA4-va4l8uoiC3uEys28q_7njbfMSpTKrbLsiSrvBSGAYB8lOtRGMGS_--R10GsNSlQ1PTrtw[/URL] portals[631][name]: Gordon House - Wesley Dementia Care stubs[0][lat]: -36.865096 stubs[0][lng]: 174.77066 stubs[1][lat]: -36.872709 stubs[1][lng]: 174.766448 stubs[2][lat]: -36.864204 stubs[2][lng]: 174.770893 stubs[3][lat]: -36.875467 stubs[3][lng]: 174.73618 stubs[4][lat]: -36.861377 stubs[4][lng]: 174.769936
Код (разметка):

teenfibber


Рег
30 Jul, 2015

Тем
1

Постов
2

Баллов
12
  • 10, Jun 2024
  • #2
Почему бы вам не выполнить сериализацию, а затем base64 закодировать ваши два массива и отправить их как одну входную переменную? Затем, при получении, вы можете декодировать десериализацию и выполнить остальную обработку.

Я читал на stackoverflow, что увеличение входных переменных, подобное этому, может сделать сервер уязвимым для атак типа «отказ в обслуживании».
 

soldat62


Рег
25 Jan, 2013

Тем
1

Постов
3

Баллов
13
  • 14, Jun 2024
  • #3
К черту эту дерьмовую пародию на компьютеры 1960-х годов, которая использует base64... Отправьте его как одно поле в формате JSON. Если это JavaScript — поскольку @sarahk сказал AJAX — ИСПОЛЬЗУЙ ЭТО!!! Именно для таких данных существуют такие форматы, как JSON и XML.
 

vitaliynik


Рег
07 Jan, 2012

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно