Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2013, 18:02
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Error enviando noticias con o sin imágenes a base de datos desde formulario admin

Hola.

Estoy creando un administrador de contenidos con un formulario en html5 y probando la opción de enviar noticias con la opción de imágenes o sin imágenes. Por ahora estoy haciendo pruebas para ir comprobando lo siguiente:

- Si existe una imágen a enviar que haga un aviso de que sí hay imagen.
- Si existe dicha imágen que revise si su formato es correcto (jpg, gif, png)
- Si no lo es que avise que no es correcto dicho formato.
- Si no existe imágen que avíse diciendo no hay imagen (para luego hacer el envío)

Por ahora lo estoy preparando asi:

Código HTML:
Ver original
  1. <form action="" id="enviar-noticia" name"enviar-noticia" method="post" enctype="multipart/form-data" >
  2.                     <label for="titulo">Título:</label><br />
  3.                     <input type="text" id="titulo" name="titulo" size="80" required /><br />
  4.                     <label for="noticia">Noticia:</label><br />
  5.                     <textarea id="noticia" name="noticia" cols="70" rows="10"></textarea><br />
  6.                     <label for="imagen">Imagen: </label>                               
  7.                     <input type="file" id="imagen1" name="imagen1" title="Enviar imagen" />        
  8.                     <input type="submit" id="enviar" name="enviar" value="Enviar">
  9.                 </form>

Código PHP:
Ver original
  1. <?php
  2.                 if (isset($_POST["enviar"]))
  3.                 {                  
  4.                     /*Primero compruebo si se ha elegido una imagen*/
  5.                     if($_FILES["imagen1"]['tmp_name']!="")
  6.                     {
  7.                         echo "Hay imagen ";
  8.                         /*--------------------------- Aquí preparo la imagen, imagen1*/
  9.                         //Ruta para subir el archivo
  10.                         $destino = '../img';                   
  11.                         //Nombre de la imagen
  12.                         $imagen1=$_FILES["imagen1"]["name"];       
  13.                         //Nombre Imagen temporal
  14.                         $imagen1_tmp=$_FILES["imagen1"]["tmp_name"];       
  15.                         //Tamaño
  16.                         $imagen1_tamano=$_FILES["imagen1"]["size"];
  17.                         $kilobytes=$imagen1_tamano/1024;//Tamaño de la imagen en Kylobytes;
  18.                         $maximo = 102400; //100Kb
  19.                         $max=1500000; //(1.5Mb)    
  20.                         //Tipo de archivo  
  21.                         $imagen1_tipo=$_FILES["imagen1"]["type"];
  22.                         //Compruebo si el tipo de archivo es correcto
  23.                         if($imagen1_tipo == "image/jpeg" or $imagen1_tipo == "image/gif" or $imagen1_tipo == "image/png" or $imagen1_tipo == "image/x-png")
  24.                         {
  25.                             echo "La imagen es correcta<br />";                        
  26.                         }                      
  27.                         else{
  28.                             echo "Error, formato de imagen no válida.";
  29.                         }          
  30.                     }
  31.                     /*Si no se ha elegido ninguna imagen*/
  32.                     else
  33.                     {                              
  34.                         echo "No lleva imágenes y preparo el envío.";
  35.                     }                      
  36.                 }
  37.                 ?>

Todo sale bien sin embargo si meto un archivo .pdf o .avi o .mp3 directamente pasa a no hay imagen y entonces el usuario si podría hacer el envio, cuando lo que debería de aparecer es: "Error, formato de imagen no válida." y así no poder enviarse para que el usuario meta una imagen correcta.

¿Qué debo de cambiar en ese código?. Saludos.