POST变量中的PHP限制

POST变量中的PHP限制,php,post,encoding,base64,Php,Post,Encoding,Base64,我试图通过POST方法向PHP脚本发送一个数组。首先我对它进行序列化(),然后对它使用base64\u encode()。接收后,脚本将base64_decode()然后取消序列化()。我知道使用base64_encode函数会将数据大小增加33%,因此我担心POST变量可能会被淹没,从而导致错误。对可以发布的字符串有限制吗?或者更好,除了base64_encode之外,还有其他方法可以正确地将数组传递给其他脚本吗?顺便说一句,在序列化时不使用base64_u函数,我会收到“Error:…off

我试图通过POST方法向PHP脚本发送一个数组。首先我对它进行序列化(),然后对它使用base64\u encode()。接收后,脚本将base64_decode()然后取消序列化()。我知道使用base64_encode函数会将数据大小增加33%,因此我担心POST变量可能会被淹没,从而导致错误。对可以发布的字符串有限制吗?或者更好,除了base64_encode之外,还有其他方法可以正确地将数组传递给其他脚本吗?顺便说一句,在序列化时不使用base64_u函数,我会收到“Error:…offset”通知

< P>不必担心大小,但我会考虑使用这个值

< P>一个Pmax的值Ir负责后最大尺寸:

post_max_size = 10M
1) 可以发布的最大数据量是php.ini中的POST_max_size指令。见:


2) 也许您可以通过$\u SESSION执行此操作?

这取决于数组的内容。如果主要是文本,则可以使用gzcompress/gzuncompress压缩/解压缩生成的序列化对象:

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

$original = unserialize(gzuncompress(base64_decode($_POST['encoded'])));
gzencode/gzdecode可能会为较大的数据提供更好的压缩。如果您的aray包含二进制数据,或者更糟糕的压缩数据,那么这项技术可能不会有什么好处


除了前面提到的PHP配置之外,您的web服务器还可以施加POST大小限制,例如apache中的LimitRequestBody指令:

Dunno about sessions,那么数据库呢?@Briedis如果要将数据保存在数据库中,那么就保存它。但如果是临时数据,则会话是您的选择。顺便说一下,在您的问题中添加某些示例和用户案例,您可以显著提高答案质量。这是来自表单吗?您希望您的数据有多大?是否有任何理由不将其存储在内部,例如存储在由会话ID标识的文件中?Hmmm。。。我将传递double,所以也许我可以使用gz函数,不是吗?我已经用100、10000和1000000个随机double数组做了一些测试。在所有情况下,它们都使用gzcompress压缩到原始大小的50%以下(分别约为48%、42%和41%)。