2012-02-29 8 views
20

Tengo una forma grande y puedo ver por firebug que todos los valores de los elementos se envían correctamente, pero cuando imprimo_r ($ _ POST) solo aparecen 1000 variables. Mi max_post_size está configurado en 25M, así que sé que ese no es el problema y busqué en mi php.ini palabras clave como 'publicar' y 'máximo' y no encontré nada.php Publicación limitada a 1000 variables

1000 es solo 1/4 de los elementos que estoy aprobando, así que obviamente este es un gran problema para mí, realmente agradezco cualquier ayuda que pueda obtener.

+13

¿Solo 1000 variables? –

+0

* (bocas) * ¿UNA MIL? – MacMac

+2

Eso es probablemente una limitación del protocolo HTTP (aunque nunca he oído hablar de él). ¿Hay alguna manera de minimizar el número de variables enviadas en su POST? Nunca he oído hablar de un sitio que tiene MÁS DE 9000 (tenía que decirse) variables POST. –

Respuesta

34

Veo lo que hizo aquí.

max_input_vars, 1000 

promulgada con el fin de prevenir la colisión de hash ataque: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html pero fracasó en 5.3.9: http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html Así que tenga que actualizar a 5.3.10+ si eso es un problema.

+2

Podría ser 'suhosin.post.max_vars = 1000' también (si está usando Suhosin, por supuesto). – Crontab

+0

@Crontab, podría ser, tienes razón, pero todas las empresas de hosting deberían haber actualizado a 5.3.10+ :) –

+0

Lo vi sobre las configuraciones max_input_vars y suhosin.post.max_vars, pero ninguna de las dos está en mi php.ini. Tengo 5.3.6 instalado. – jreed121

6

Tuve una situación similar; Solo pude PUBLICAR los primeros 1000 elementos de una matriz.

Mi solución fue implode() la matriz en una cadena larga y explode() en el lado del servidor.

json_encode() probablemente podría funcionar también.

7

Tuve exactamente el mismo problema del límite de 1000 variables usando PHP v5.4.20. Aunque el archivo php.ini no contenía ninguna de esas líneas 'max_input_vars', simplemente encontré un lugar conveniente para colocarlo en la sección superior [PHP], agregué la línea 'max_input_vars = 10000', reinicié Apache y todo se solucionó .

0

Ok. He descubierto una solución utilizando jQuery

lo hice como esta función

$("#single-form").submit(function(event) { 
    event.preventDefault(); 
    var table_data = $(this).serialize(); 
    console.log(table_data); 
    // ajax call to handle the data 
} 

serialize dará la URL cadenas codificadas de todos los datos del formulario y en archivo PHP sólo tiene que utilizar la función parse_str analizar la cadena en variables.

Cuestiones relacionadas