Foros del Web » Programando para Internet » PHP »

Error al validar campo file

Estas en el tema de Error al validar campo file en el foro de PHP en Foros del Web. Hola chicos ; estoy teniendo problemas en la validación con un formulario que sube archivos: Este es el formulario: Código HTML: <tr> <td > Nueva ...
  #1 (permalink)  
Antiguo 01/03/2010, 10:01
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Error al validar campo file

Hola chicos; estoy teniendo problemas en la validación con un formulario que sube archivos:

Este es el formulario:
Código HTML:
<tr><td >Nueva Imagen:</td>
       <td ><input name="carga1" type="file" class="texto4" id="carga1"  /></td>
 </tr>
<tr >
       <td>Nuevo Video:</td>
       <td><input name="carga2" type="file" class="texto4" id="carga2"  /></td>
</tr> 
Este es el script para subir:
Código PHP:
$foto=$_FILES["carga1"]["name"];
$video=$_FILES["carga2"]["name"];
$file="../data/programas";
$tmpf=$_FILES["carga1"]["tmp_name"];
$tmpv=$_FILES["carga2"]["tmp_name"];
$ext1 substr($foto,strrpos($foto,"."),4);
$ext2 substr($video,strrpos($video,"."),4);
if( !
$foto||!$video){
echo 
"no se ha seleccionado un archivo para subir";} 
supuestamente en el if valido si no ha elegido subir un video aparezca el mensaje pero elija o no elija un video o imagen o ambos igual me aparece el mensaje de error, cambie por empty me resulto en error ;lo iguale a asi ="" y resultaba en lo mismo.

esta es una validación de la extensión del archivo sólo debe aceptar flv y jpg pero aunque elija swf en el video no valida y lo carga:
Código PHP:
if($ext1==".flv" || $ext2==".jpg"
.

en que esta fallando mi validación?? .
  #2 (permalink)  
Antiguo 01/03/2010, 10:08
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Error al validar campo file

Mmmm, no sé si será mejor hacer un explode:
Código PHP:
Ver original
  1. $ext1 = explode(".",$foto);
  2. $ext2 = explode(".",$video);
  3.  
  4. $cuantos1=count($ext1)-1;
  5. $cuantos2=count($ext2)-1;
  6.  
  7. echo $ext1[$cuantos1];
  8. echo $ext2[$cuantos2];
ahí te dará la extensión fijo.
Además, la validación en este caso creo que es mejor por separado:
Código PHP:
Ver original
  1. if($ext1[$cuantos1]==".flv") {
  2.    //Válido
  3. }
  4. if($ext2[$cuantos2]=="jpg") {
  5.  
  6.    //Válido
  7.  
  8. }

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 01/03/2010, 10:11
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Error al validar campo file

Porque no intentas tomando el tipo del archivo:

Código PHP:
$tipo_archivo $_FILES['userfile']['type']; 
y luego verificas el tipo :

Código PHP:
if (!((strpos($tipo_archivo"flv") ))){
   echo 
"El tipo de archivo no es correcto".

Saludos.
  #4 (permalink)  
Antiguo 01/03/2010, 10:15
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error al validar campo file

humm una consulta con eso valido si no ha elegido archivos??; ahora mismo voy a hacer los cambios y te aviso gracias n.n

Última edición por kuroTenshi; 01/03/2010 a las 10:22
  #5 (permalink)  
Antiguo 01/03/2010, 10:23
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error al validar campo file

Gracias ya pude validar la extensión con lo de juamd y lo hice por separado como me recomendaste CHuLoSoY pero como hago para ver si no ha elegido subir un archivo??
  #6 (permalink)  
Antiguo 01/03/2010, 10:41
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Error al validar campo file

Primero validar del lado del cliente con javascript que se haya realizado una seleccion (campo no vacio), ademas en php verificar el tipo del archivo y el tamaño.

Para el tamaño puedes usar:

Código PHP:
$tamano_archivo $_FILES['userfile']['size']; 
Ademas puedes validar el tamaño del archivo, permitiendo solo determinado tamaño.

Saludos.
  #7 (permalink)  
Antiguo 01/03/2010, 10:46
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error al validar campo file

Ya no se que hice solo cambie el código ahora no me deja cargar ningun archivo xS:

Código PHP:
Ver original
  1. if((strpos($ext1,"swf"))){// Solo le quite el ! en ambos
  2.  if((strpos($ext2,"jpg"))){
  3.      $resp = mysql_query("SELECT * FROM videos ORDER BY codigo DESC LIMIT 1")or print(mysql_error());
  4.      $num=mysql_num_rows($resp);
  5.      if($num>0){
  6.      $row = mysql_fetch_array($resp);
  7.      $codigo=$row['codigo']+1;
  8.      }else{
  9.      mysql_query('ALTER TABLE videos AUTO_INCREMENT =100');
  10.      $codigo=100;  
  11.      }
  12.      copy($tmp,$file."/".$codigo.$ext1);
  13.      copy($tmp2,$file."/".$codigo.$ext2);
  14.      $sql="INSERT INTO videos (titulo ,descripcion ,fecha)VALUES (  '$titulo', '$desc','$fecha')";
  15.      mysql_query($sql,$conex);
  16.      header("Location: lista_videos.php");
  17.  }
  18. }else{
  19.     header("Location:subir_video.php?msg='no'");
  20. }
  #8 (permalink)  
Antiguo 01/03/2010, 10:51
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Error al validar campo file

No utilices copy, utiliza move_uploaded_files()

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #9 (permalink)  
Antiguo 01/03/2010, 10:53
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Error al validar campo file

Los dos if no dejan que llegue a la carga de archivo porque el primero solo pasa si es swf y el segundo si es jpg, por lo tanto para llegar a la carga un archivo debe ser de los dos tipos.

Intenta con esto :

Código PHP:
if (!((strpos($tipo_archivo"swf") )) || !(strpos($tipo_archivo"jpg"))){
   
No es de ninguno de los dos tipos muestra un error.
}else{
  
Es de tipo swf o jpg entonces carga el archivo.
 } 
Saludos.
  #10 (permalink)  
Antiguo 01/03/2010, 11:10
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error al validar campo file

Resolvi lo de la extension; fue extraño porque cuando imprimía $ext1 y $ext2 ( con lo de $tipo_archivo )me resultaba esto:
$ext1= application/octet-stream
$ext2=image/pjpeg

por eso es que siempre era falso, que raro no se supone que estoy extrayendo solo la extension??O.O??

chulosoy cuando cambie la linea del copy por el move_uploaded_files($tmp,$file."/".$codigo.'.flv')
tuve este resultado

Fatal error: Call to undefined function move_uploaded_files() in C:\xampp\htdocs\vamosalaferia\admin\grabar.php on line 37.

Gracias chicos por su ayuda y paciencia n.n
  #11 (permalink)  
Antiguo 01/03/2010, 12:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Error al validar campo file

El problema de validar por el php, es que se tendrá que subir la imagen i el error lo tirará una vez cargada (alto tiempo de carga). Por el php hay que validar siempre, ya que el javascript es mas facil de manipular i evitar por un usuario, pero con este script puedes validar previamente por javascpirt, de manera que no hará falta cargar la imagen!! (de todas maneras, deja la validación php tal como indiqué antes...). Bueno, dejo un script que tube que hacer hace tiempo y te irá perfectamente para lo que quieres hacer. Está en catalan, pero no creo que les sea dificil traducirlo, espero que os sirve ;)

Código PHP:
<script type="text/javascript">
<!--
function 
validar()
{
    var 
imatge = new String(document.getElementById("imatge").value);
    var 
punt imatge.lastIndexOf('.')+1;
    if(
imatge == "")
    {
        
alert("Primer has de seleccionar una imatge del teu ordinador.");
    }
    else if(
imatge.substr(punt,3) != "jpg" && imatge.substr(punt,3) != "gif" && imatge.substr(punt,3) != "png" && imatge.substr(punt,3) != "JPG" && imatge.substr(punt,3) != "GIF" && imatge.substr(punt,3) != "PNG")
    {
        
alert("Només s'accepten els formats: .jpg, .gif i .png");    
    }
    else
    {
        
document.getElementById("enviar").disabled true;
        
document.getElementById("carrega").innerHTML " Espera, s'està carregant la imatge...";
        
document.foto.submit();
    }
}
// -->
</script> 
Recuerda que debes indicar los ids a los elementos correspondientes del HTML i ejecutar la funcion en el onsubmit del la etiqueta <form> (me parece que también te harà falta poner return false; despues). Si tienes alguna duda para implementarlo pregunta. Espero que te sea útil!! Saludooos ;)
  #12 (permalink)  
Antiguo 01/03/2010, 20:12
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error al validar campo file

Humm a la hora de modificar los datos del archivo que los almaceno en la base de datos es donde valido si escoge un nuevo video o una nueva imagen si las elige copia los nuevos archivos y si no solo actualiza los nuevos datos, osea que esa validacion la hago en mi php pero con javascript.Solucionado

Última edición por kuroTenshi; 06/03/2010 a las 09:59 Razón: SOLUCIONADO

Etiquetas: file, campos
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 01:54.