Ограничение PHP в переменных POST - PullRequest
0 голосов
/ 21 февраля 2011

Я пытаюсь отправить массив в скрипт PHP через метод POST. Сначала я serialize () it, затем использовал base64_encode () . Получив его, скрипт затем base64_decode () затем unserialize () it. Я знаю, что использование функций base64_encode увеличивает размер данных на 33%, поэтому я беспокоюсь о том, что переменные POST могут быть перегружены, что приводит к ошибке. Есть ли предел для строки, которая может быть POST'ed? Или лучше, есть ли другой способ, который я могу использовать, кроме base64_encode, чтобы правильно передать массив другому сценарию? Кстати, без использования функций base64_ при сериализации я получаю уведомление «Ошибка: смещение».

Ответы [ 4 ]

5 голосов
/ 21 февраля 2011

Значение php.ini, отвечающее за максимальный размер POST:

post_max_size = 10M
1 голос
/ 21 февраля 2011

Это будет зависеть от содержимого массива.Если это в основном текст, то вы можете сжать / распаковать, используя gzcompress / gzuncompress получившегося сериализованного объекта:

$encoded = base64_encode(gzcompress(serialize($original)));

$original = unserialize(gzuncompress(base64_decode($_POST['encoded'])));

gzencode / gzdecode, вероятно, даст лучшее сжатие для данных большего размера.Если ваш массив содержит двоичные данные или даже хуже сжатые данные, то этот метод, скорее всего, не принесет большого успеха.

В дополнение к уже упомянутой конфигурации PHP, ваш веб-сервер также может устанавливать ограничения размера POST дляЭкземпляр директивы LimitRequestBody в apache: http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody

1 голос
/ 21 февраля 2011

Не нужно беспокоиться о размере, но я бы подумал об использовании сессий для этой цели

0 голосов
/ 21 февраля 2011

1) Максимальный объем данных, которые вы можете POST, это директива post_max_size в php.ini. Смотри: http://www.php.net/manual/en/ini.core.php#ini.post-max-size

2) Возможно, вы сможете сделать это через $ _SESSION?

...