Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Condicional subiendo un archivo

Estas en el tema de Condicional subiendo un archivo en el foro de PHP en Foros del Web. Hola. Quiero verificar que lo que se suba sea una imagen: Código PHP: $extensión  =  explode ( "." , $_FILES [ foto ][ name ]); ...
  #1 (permalink)  
Antiguo 13/11/2014, 21:21
Avatar de saulortega  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogotá
Mensajes: 79
Antigüedad: 12 años, 7 meses
Puntos: 0
Condicional subiendo un archivo

Hola.

Quiero verificar que lo que se suba sea una imagen:

Código PHP:
$extensión explode(".",$_FILES[foto][name]);

if(
$extensión[1] != 'jpg' or $extensión[1] != 'jpeg' or $extensión[1] != 'gif' or $extensión[1] != 'png' or $extensión[1] != 'bmp') {
echo 
'Por favor sube una foto. Debe estar en formato JPG, PNG, o GIF. -- '.$extensión[1];
  } 

Y siempre se cumple el condicional, aunque la extensión sea una de las indicadas. La impresión de $extensión[1] lo demuestra.
  #2 (permalink)  
Antiguo 13/11/2014, 21:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Condicional subiendo un archivo

Las operaciones de comparación en ocasiones son ambiguas, siempre que tengas que lidiar con ellas debes agruparlas en paréntesis.

Código PHP:
Ver original
  1. // MAL
  2. if (x != 'x' || y != 'y' || z != 'z') {
  3.   // ...
  4. }
  5.  
  6. // BIEN
  7. if ((x != 'x') || (y != 'y') || (z != 'z')) {
  8.   // ...
  9. }

Es mejor siempre agrupar para evitar tales ambigüedades.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/11/2014, 09:41
Avatar de saulortega  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogotá
Mensajes: 79
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Condicional subiendo un archivo

Pos no, tampoco funcionó...

Código PHP:
if(($extensión[1] != 'jpg') or ($extensión[1] != 'jpeg') or ($extensión[1] != 'gif') or ($extensión[1] != 'png') or ($extensión[1] != 'bmp')) {
    
$errores[8] = 'Por favor sube una foto. Debe estar en formato JPG, PNG, o GIF. -- '.$extensión[1].'--'.$extensión[0];
  } 
Ni con or ni con ||.
  #4 (permalink)  
Antiguo 14/11/2014, 09:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Condicional subiendo un archivo

Ya entendí, el problema es que el operador lógico debe ser &&.

¿Por qué?

Porque la extensión NO debe ser NINGUNA de las opciones listadas.

Entonces con || podría acertar en una comparación, pero no en otra, es decir:

Cita:
x = 1;

((x != 1) || (x != 2))
Entonces, ¿x no es igual a 1? FALSO, sí es igual a 1, al ser FALSO continúa con la siguiente comparación.

Entonces, ¿x no es igual a 2? CIERTO, 2 es diferente de 1, al ser CIERTO entra a la condición.

Pero si aplicamos && sucede así:

Cita:
x = 1;

((x != 1) && (x != 2))
Entonces, ¿x no es igual a 1? FALSO, sí es igual a 1, al ser FALSO continúa con la siguiente comparación.

Entonces, ¿x no es igual a 2? CIERTO, 2 es diferente de 1, pero el resultado previo es FALSO entonces no puede ser CIERTO y FALSO a la vez, ya no entra a la condición.

Entonces, para que entre a la condición todas las condiciones deberían ser CIERTAS.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 14/11/2014, 10:40
Avatar de saulortega  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogotá
Mensajes: 79
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Condicional subiendo un archivo

Sí señor.
  #6 (permalink)  
Antiguo 14/11/2014, 11:01
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Condicional subiendo un archivo

Yo te recomendaría mas que comprobar la extensión que cheques la mime content type

Recuerda que aun archivo se le puede cambiar la extensión, por lo que checar la extensión resulta poco útil en cuanto a seguridad... en cambio si compruebas la mime, por mucho que cambies la extensión siempre obtendrás el mismo resultado.

y como ya te dijeron el uso de != es para una negativa, debes utilizar == para confirmar que sea lo que tu buscas.

Etiquetas: condicional, subiendo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.