Ver Mensaje Individual
  #16 (permalink)  
Antiguo 12/07/2013, 10:30
ismaelmolinas
 
Fecha de Ingreso: julio-2013
Ubicación: Paraguay
Mensajes: 71
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Galería de fotos en php

Tengo una duda, estuve probando el sistema, para ver si los arreglos de seguridad que le hicimos funciona, y me doy cuenta de que solo salta el mensaje de que el archivo solo tiene que ser jpg, por mas de que haya cargado un archivo que supere el limite o una rchivo que haya cambiado de extension, tambien sale el mismo mensaje al no seleccionar ningun archivo y hacer clic en enviar, despues de todo el arreglo que hicimos el codigo quedo de esta manera:

Código PHP:
Ver original
  1. <?php
  2. // Base de datos:
  3. // Definimos la variable y realizamos la conexión con la base de datos:
  4. $conexion = mysql_connect('localhost', 'root', '') or die('Error al conectar con la base de datos.');
  5. // Definimos la variable y seleccionamos la base de datos a ser utilizada:
  6. $basededatos = mysql_select_db('galeria', $conexion) or die('La base de datos seleccionada no existe.');
  7. // Definimos la variable y seleccionamos la tabla para generar el nombre de la foto:
  8. $nombreid = mysql_query("SELECT * FROM fotos WHERE id ORDER BY id desc LIMIT 1");
  9. // Fin base de datos
  10.  
  11. // Correo electrónico:
  12. // Definimos la variable para el correo electrónico:
  13. $correo_electronico = $_POST['correo_electronico'];
  14. // Fin correo electrónico
  15.  
  16. // Foto:
  17. // Definimos las variables para la foto:
  18. $directorio = 'fotos';
  19. $fila = mysql_fetch_array($nombreid);
  20. $id = $fila['id'];
  21. $nombre = "chica_dosual.net_".$id.".jpg";
  22. $tipo = getimagesize($_FILES['foto']['tmp_name']);
  23. $rutatemporal = $_FILES['foto']['tmp_name'];
  24. $tamaño = $_FILES['foto']['size'];
  25. $rutafinal = $directorio.'/'.$nombre;
  26. // Comprobamos que el tipo y el tamaño de la foto sean los correctos:
  27. if ($_POST['enviar']) {
  28. if (empty($_FILES['foto'])) {
  29. die ("Seleccione la foto que desea enviar.");
  30. }
  31. if (isset($tipo['mime']) && $tipo['mime'] == "image/jpeg") {
  32. if ($tamaño <= 2500000) {
  33. // Movemos la foto al directorio de destino:
  34. move_uploaded_file($rutatemporal, $rutafinal);
  35. // Si la foto no cumple los requisitos, mostramos los mensajes:
  36. }else{
  37. die ("No cargue esta página directamente.");
  38. }
  39. }else{
  40. die ("Sólo se pueden enviar fotos en formato JPG.");
  41. }
  42. }else{
  43. die ("La foto supera el tamaño máximo permitido.");
  44. }
  45. // Fin foto
  46.  
  47. // Miniatura:
  48. // Definimos las variables para la reación de la miniatura:
  49. $rutaminiatura = $rutafinal;
  50. $directoriominiatura = "fotos/miniaturas/miniatura_".$nombre;
  51. $anchominiatura = 150;
  52. $altominiatura = 150;
  53. // Creamos el lienzo de la foto:
  54. $miniatura = imagecreatetruecolor($anchominiatura, $altominiatura);
  55. $fotominiatura = imagecreatefromjpeg($rutafinal);
  56. // Obtenemos las dimensiones de la foto original:
  57. $tamañominiatura = getimagesize($rutaminiatura);
  58. $ancho_inicial = $tamañominiatura[0];
  59. $alto_inicial = $tamañominiatura[1];
  60. // Tomamos el lado más grande de la foto para tener una miniatura cuadrada:
  61. $lado = $ancho_inicial > $alto_inicial ? $alto_inicial : $ancho_inicial;
  62. // Creamos la miniatura en base a la foto original:
  63. imagecopyresampled($miniatura, $fotominiatura, 0, 0, 0, 0, $anchominiatura, $altominiatura, $lado, $lado);
  64. // Guardamos la foto en miniatura con una calidad de 100%:
  65. imagejpeg($miniatura, $directoriominiatura, 100);
  66. // Fin miniatura
  67.  
  68. // Marca de agua:
  69. // Definimos las variables para la marca de agua:
  70. $rutamarcadeagua = 'imagenes/marca_de_agua.png';
  71. $marcadeagua = imagecreatefrompng($rutamarcadeagua);
  72. // Procedemos a crear el fichero JPEG final con la marca de agua a partir de la foto inicial:
  73. $rutafoto = $directorio . '/' . $nombre;
  74. $foto = imagecreatefromjpeg($rutafoto);
  75. // Obtenemos las dimensiones de la foto y de la marca de agua:
  76. $tamañofoto = getimagesize($rutafoto);
  77. $tamañomarca = getimagesize($rutamarcadeagua);
  78. $destino_x = $tamañofoto[0] - $tamañomarca[0] - 10;
  79. $destino_y = $tamañofoto[1] - $tamañomarca[1] - 10;
  80. // Pegamos la foto con la marca de agua:
  81. imagecopymerge($foto, $marcadeagua, $destino_x, $destino_y, 0, 0,$tamañomarca[0], $tamañomarca[1], 100);
  82. // Guardamos los cambios:
  83. imagejpeg($foto, $rutafoto);
  84. // Liberamos la memoria:
  85. imagedestroy($foto);
  86. imagedestroy($marcadeagua);
  87. // Fin marca de agua
  88.  
  89. // Construimos la cadena SQL para guardar los datos:
  90. $sql = "INSERT INTO fotos (url,correo_electronico) values('" . $rutafinal . "','" . $correo_electronico . "')";
  91.  
  92. // Informamos el resultado de la operación:
  93. $respuesta = mysql_query($sql, $conexion);
  94. if ($respuesta) {
  95.     echo 'La foto ha sido enviada correctamente.';
  96. } else {
  97.     echo 'Error al enviar la foto.';
  98. }
  99.  
  100. ?>

Cual podria ser la causa de ese pequeño error?