Entonces, mi cliente tiene este antiguo portal de pedidos que permite a los usuarios ingresar un monto de pedido por material y enviar ese pedido. Mi registro de errores arrojaba una advertencia PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.
Así que decidí var_dump() mi variable $_REQUEST cuando el usuario presiona el botón de enviar.
La hilaridad se produjo cuando descubrí que mi variable $_REQUEST no solo contenía los materiales para los que un usuario ingresó una cantidad, sino también los CIENTOS de otros materiales sin cantidad/cantidad de pedido.
array(1001) { ["CSRFToken"]=> string(69) "nice" ["submitbutton"]=> string(12) "Submit Order" ["material1006360"]=> string(1) "1" ["material1875"]=> string(1) "1" ["material1000987"]=> string(1) "0" ["material8800"]=> string(1) "0" ["material8703"]=> string(1) "0" ["material8799"]=> string(1) "0"...Y esto continúa literalmente durante unos pocos cientos de materiales. Lo que es aún más extraño es que en realidad tenemos un carrito pequeño y agradable que se genera automáticamente en la parte superior de la página una vez que ingresas una cantidad. Entonces, obviamente, se está creando y actualizando una variable para el carrito, por lo que es extraño que el carrito no esté siendo aprobado, sino toda la página de materiales.
Supongo que mi pregunta es, ¿cómo controlo exactamente qué vars envía el usuario? ¿Cómo puedo hacer que $_REQUEST contenga muchos menos datos basura?
Tengo una comprensión conceptual de alto nivel, pero como puede ver, no sé exactamente dónde buscar cuándo/dónde/cómo el usuario envía estos datos. Todavía soy nuevo en esto y, sinceramente, no estoy seguro de si PHP lo hace todo, o si JS tiene algo que ver con eso.
Realmente me vendría bien un poco de sabiduría con esto, porque estoy seguro de que el envío de datos de una entrada de usuario será algo común en mi futuro viaje de desarrollo web.
editar: la página parece estar usando una lista de elementos usando formularios de entrada HTML estándar: <input type="number" class="quantity form-control" name="material1006360" id="material1006360" value="0" style="user-select: auto;">
Entonces, cada material tiene un formulario de entrada como ese, y al enviarlo, solo se ejecuta a través de cada formulario.
edición 2: Entonces, después de la investigación, toda mi lista de materiales consta de cada entrada de material en UNA forma. Entonces, al enviar ese formulario, lee cientos de entradas de material vacías. Luego traté de deshabilitar el elemento de entrada y ejecuté `var_dump($_REQUEST). Para mi sorpresa, en realidad borró la var enviada. Encontré esta increíble publicación aquí: Evento en una entrada deshabilitada Eso tuvo una gran discusión sobre la deshabilitación de la entrada. Mi idea es hacer que la entrada tenga un detector de eventos al hacer clic que los activará. No es perfecto, pero debería hacer que mis vars de envío sean mucho más limpios.