Cita:
Iniciado por eurodoblon
He seguido tu consejo leyendo FAQS, pero no encontre nada al respecto.
![Pensando](http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif)
.... detente un poco más:
http://www.forosdelweb.com/f18/indice-faqs-php-108208/
3. Que diferencias hay entre usar para pasar variables de un script a otro: $variable_nombre, $HTTP_xxx_VARS['variable_nombre'], $_XXX['variable_nombre'].
12. ¿Cómo puedo subir archivos a través de un formulario?
Cita:
Iniciado por eurodoblon
Si tienes un minuto, por favor dime donde está el problema
Claro
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
.
Estás haciendo una validación (edito código pero conservo la lógica):
Código PHP:
// Asignas valores a las variables
$tipo_archivo = $_FILES["logo"]["type"];
$tamano_archivo = $_FILES["logo"]["size"];
// Y haces tu validación.
if (!((strpos($tipo_archivo, "gif")|| strpos($tipo_archivo, "png") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 50000)))
{
$fotomal= "* Error: La imagen o sobrepasa el tamaño de 50 Kb o no es jpg, png, gif";
}
Según tu validación, se mostrará el mensaje de error (entrará en el bloque) cuando:
- La variable $tipo_archivo NO contenga alguno de los textos "gif", "png" o "jpeg"
- Y además $tamano_archivo sea menor de 50000
¿Qué sucede cuándo no se envió el archivo? ambas variables tienen valores nulos (están vacias) por lo que:
- Cumple que $tipo_archivo NO tiene ni "gif", ni "png" ni "jpeg" (porque, de hecho, no tiene nada)
- Y $tamano_archivo es menor de 50000 (nada, osea '0', es menor que cualquier valor positivo)
¿Resultado? ...
¡Eh ahí el error! ![apachar ojo](http://static.forosdelweb.com/fdwtheme/images/smilies/wink.png)
. Tienes un problema de lógica, no estás considerando esta situación donde no se envió el archivo y las variables
están vacías. Entonces tu validación tendría que considerarlo y mostrar el mensaje solo cuando:
-
$tamano_archivo NO este vacío (o $tipo_archivo ... o ambas ... pero con una debería bastar; sugiero el tamaño del archivo).
- Y la variable $tipo_archivo NO contenga alguno de los textos "gif", "png" o "jpeg"
- Y además $tamano_archivo sea menor de 50000
Para esa agregar esa condición faltante te puedes valer de la función empty() que mencioné anteriormente ...
Claro, eso siguiendo tu metodología y solo para que lo entendieses, la verdad es que deberías hacer uso de la función is_uploaded_file()
como lo muestra la FAQ ... así, una vez más, te aconsejo darle una mirada.
Espero haberme explicado y aclarado la duda. Suerte