PHP - Problema con $_FILES al mezclar archivos con otros input

 
Vista:

Problema con $_FILES al mezclar archivos con otros input

Publicado por Alberto (5 intervenciones) el 29/09/2019 13:00:16
Buen día para todos,

estoy lidiando con lo que considero un error mio y me gustaría saber que es lo que hago mal.
Tengo un formulario para subir un archivo, de hecho permite selección múltiple, que funciona bien. El código sería así:

1
2
3
4
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile[]" multiple=""/>
<button name="boton2" type="submit">Subir</button>
</form>

Como es de esperar toda la información es almacenada en la variable $_FILES
El problema ocurre al agregar cualquier otro campo al formulario, si bien el archivo es subido, en $_FILES aparecen entradas que se corresponden con los campos agregados al formulario. Según entiendo esto no debería suceder. La información que pude leer dice que $_FILES solo debería contener la información relativa a los archivos, mientras que $_POST debería almacenar el resto de la información.

Si bien podría manejar esta situación, con algún parche, la lógica de control de errores se ve perjudicada. PHP agrega una entrada en $_FILES para cada campo extra del formulario e informa que se produjo un error...

Por ejemplo con un formulario así:

1
2
3
4
5
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile[]" multiple=""/>
<input type="hidden" name="test" value="250" />
<button name="boton2" type="submit">Subir</button>
</form>

A riesgo de cansar pongo en palabras un ejemplo: si utilizo este último formulario para subir un solo archivo, en $_FILES obtengo dos entradas, una para el archivo y otra para el campo extra donde php informa que se produjo un error...
Asumo que estoy cometiendo un error pero soy incapaz de darme cuenta cual.... ¿me podrán dar una ayuda?

Muchas gracias a todos por su tiempo y paciencia.
Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con $_FILES al mezclar archivos con otros input

Publicado por joel (1269 intervenciones) el 29/09/2019 18:26:31
Hola Alberto, yo he realizado una prueba, y $_FILES únicamente trae los valores de input type file, y el valor de test únicamente esta en la variable $_POST

Para probarlo, he montado esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="es">
	<head>
		<meta charset="utf8">
	</head>
	<body>
 
    <form action="x.php" method="post" enctype="multipart/form-data">
        <input type="file" name="userfile[]" multiple>
        <input type="hidden" name="test" value="250">
        <button name="boton2" type="submit">Subir</button>
    </form>
 
	</body>
</html>
 
<?php
print_r($_FILES);
echo "<hr>";
print_r($_POST);
?>


Nota: al indicar multiple, no hay que asignarlo a nada... simplemente hay que ponerlo:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#multiple
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con $_FILES al mezclar archivos con otros input

Publicado por Alberto (5 intervenciones) el 29/09/2019 18:49:22
Hola Joel,

gracias por dedicarme parte de tu tiempo.

en $_FILES no puedo acceder al valor de "test", sin embargo el uso de ese campo en el formulario hace que $_FILES tenga una entrada mas bajo la clave "userfile", esa entrada que se agrega tiene un "name" nulo y un "error" 4, que es lo mismo que hace PHP, por ejemplo, en el caso de intentar subir un archivo de un peso mayor al aceptado.
¿Serías tan amable de compartir conmigo una captura de pantalla del resultado del script que usas?
Yo veo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Array
(
    [userfile] => Array
        (
            [name] => Array
                (
                    [0] =>
                    [1] => Ekaterina-set2.zip
                )
 
            [type] => Array
                (
                    [0] =>
                    [1] => application/zip
                )
 
            [tmp_name] => Array
                (
                    [0] =>
                    [1] => /tmp/php2Xof1j
                )
 
            [error] => Array
                (
                    [0] => 4
                    [1] => 0
                )
 
            [size] => Array
                (
                    [0] => 0
                    [1] => 7429385
                )
 
        )
 
)

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con $_FILES al mezclar archivos con otros input

Publicado por Joel (1269 intervenciones) el 30/09/2019 07:58:17
Es muy extraño esos valores... entiendo que en la primera imagen, detecta un error, no?

a mi me llega:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Array
(
    [userfile] => Array
        (
            [name] => Array
                (
                    [0] => Imagen1.png
                    [1] => Imagen2.png
                )
 
            [type] => Array
                (
                    [0] => image/png
                    [1] => image/png
                )
 
            [tmp_name] => Array
                (
                    [0] => /tmp/phpVeqrLq
                    [1] => /tmp/php7DITGG
                )
 
            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                )
 
            [size] => Array
                (
                    [0] => 135354
                    [1] => 58918
                )
 
        )
 
)
Array
(
    [test] => 250
    [boton2] =>
)

Que versión de PHP estas utilizando?? en mi caso es PHP 7.3 sobre Linux
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con $_FILES al mezclar archivos con otros input

Publicado por Alberto (5 intervenciones) el 30/09/2019 16:01:48
Sí, es muy extraño.
La salida que mostré corresponde a un intento en el que solo selecciono un archivo para subir, el zip, sin embargo bajo la clave "userfile" aparecen dos entradas... Si quito el input hidden del formulario y repito la prueba, haciendo lo mismo, bajo la clave "userfile" solo aparece la entrada que se corresponde con el archivo zip que intenté subir.

Utilizo PHP 7.2 sobre Centos 7

Por lo que pude leer el resultado que obtengo sucede cuando se usa el mismo "name" para el/los archivo/s y otra entrada input, pero es algo que no estoy haciendo.
Probé de cambiar el orden en el formulario de los input pero el resultado es el mismo.
Por cada input que agrego en el formulario obtengo una entrada mas en $_FILES
Teniendo en cuenta que en el proceso, ademas del propio PHP, interviene el navegador, probé con navegadores diferentes obteniendo siempre el mismo resultado

Para mi es un misterio que me gustaría resolver.
Gracias por tu tiempo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con $_FILES al mezclar archivos con otros input

Publicado por joel (1269 intervenciones) el 30/09/2019 16:09:19
Has probado a copiar únicamente mi código en una pagina .php y probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con $_FILES al mezclar archivos con otros input

Publicado por Alberto (5 intervenciones) el 30/09/2019 16:16:54
No lo había hecho antes, lo acabo de hacer y el error no aparece.
El formulario que estoy usando no difiere en casi nada de tu código pero voy a mirar de nuevo y te comento que encuentro.
Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con $_FILES al mezclar archivos con otros input

Publicado por joel (1269 intervenciones) el 30/09/2019 16:22:25
Ok, ya me dirás cual es el problema...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con $_FILES al mezclar archivos con otros input

Publicado por Alberto (5 intervenciones) el 01/10/2019 01:30:38
Respuesta corta: el problema se daba por una interacción no esperada con un script

Respuesta larga: uso una plantilla para desarrollar el sitio web, soy muy malo en la parte de diseño y prefiero empezar así, el tema es que la plantilla incorpora scripts, nunca me habían dado problemas y, por esa razón, no tuve en cuenta esa posibilidad. Si no me hubieras preguntado directamente si había probado tu código sin nada mas, aún estaría dando vueltas...

De corazón gracias!!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar