Как определить, что метод POST более 1000 переменных по умолчанию PHP? - PullRequest
2 голосов
/ 03 апреля 2019

У меня есть таблица с несколькими входами в отдельных формах, которая хотела бы, чтобы у каждого пользователя было 15 из входных данных для передачи. В этом случае у меня около 80 пользователей в таблице, и я должен опубликовать все входные данные формы сразу на сайте сервера.

Однако я получил предупреждения PHP о получении более 1000 входных переменных и предлагаю увеличить максимальный предел длины входных переменных. В этом случае я получаю только около 75 пользователей. Входные данные формы передаются через метод jQuery .serialize()

Интересно, как рассчитать количество входных переменных в php ... Я пытался использовать count($request->getParams()), и он возвращает 15 (количество ключей внешнего слоя), которое мой Возвращение переменных происходит следующим образом:

name => array (
    [0] => john
    ....
    [79] => Serene
),
age => array (
    [0] => 21,
    ....
    [79] => 24,
),
....

В этом случае, является ли число переменных в 15 ключах с парой ключ-значение 80 , что в общей сложности составляет 1200 переменных? Это способ, которым PHP для расчета входных переменных путем расчета всех входных форм ввода?

Я знаю, как рассчитывать многомерный массив, но мне просто интересно, что PHP, определяет ли он длину входных переменных путем подсчета ключей внешнего слоя, подсчитывает или всех ключей во входных данных переменные?

( p.s. В таблице необходимо разместить всю информацию о пользователе, введенную из-за структуры кода )

Ответы [ 4 ]

4 голосов
/ 03 апреля 2019

Если возможна публикация данных в формате json путем сериализации формы.И вы можете проанализировать JSON на стороне сервера, чтобы получить все поля.Таким образом, вы можете публиковать данные только в одном параметре

Ниже приведен пример jquery для сериализации данных формы в json

var data = $('#myForm').serializeArray();
$.post("page.php", data);

На стороне php можно получить массив assosiateve в виде значения ключа

$data = json_decode($_POST['data'], true);
3 голосов
/ 03 апреля 2019

Вы имеете в виду count($_POST, true)?

count ( смешанный $ array_or_countable [, int $ mode = COUNT_NORMAL] )

режим

Если для необязательного параметра mode установлено значение COUNT_RECURSIVE (или 1 ), count () будет рекурсивно считать массив. Это особенно полезно для подсчета всех элементов многомерного массива.

Полагаю, это более правильно:

count($_POST, COUNT_RECURSIVE)

Особое внимание рекурсивно считать массив

Конечно, к тому времени, когда вы можете их подсчитать, вы, возможно, уже превысили лимит ( HashDos (атаки коллизий хеш-таблиц массива).

Я наблюдал хороший вебинар от босса " Rasmus Lerdorf " (парень, который изобрел PHP) несколько лет назад на нем (на HashDos, не считая массивы ... lol).

* PS - если вы не знали, что подсчет может принять 2 аргумента, я не скажу, сколько времени мне потребовалось, чтобы выяснить это ...

2 голосов
/ 03 апреля 2019

попробуйте использовать этот способ, надеюсь, он вам поможет

$count = 0;
foreach ($array as $type) {
    $count+= count($type);
}

отметьте это

2 голосов
/ 03 апреля 2019

Вы можете сделать следующее:

Обмен опытом из нескольких строк, имеющих количество полей.

Для каждой пользовательской строки добавьте флажок Edit, по умолчанию снят.

И все поля строки отключены.

Если вы хотите отредактировать строку пользователя, установите флажок.

Элементы формы из этой строки будут включены.

Маловероятно, что пользователь будет добавлять данные в 75-80 строк в форме.

Следовательно, будут опубликованы только те строки, которые разрешены пользователем.

Отключенные элементы формы не отправляются.

И, скорее всего, число будет меньше 1000.

...