Ver Mensaje Individual
  #19 (permalink)  
Antiguo 12/07/2013, 15:46
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Galería de fotos en php

Te dejo este código, funciona y hace las validaciones pertinentes, solo que eh comentado mucho de tu código, solo es quitar los /* y */ para que funcione correctamente!

Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['correo_electronico'])) {
  3.     /*
  4.     // Base de datos:
  5.     // Definimos la variable y realizamos la conexión con la base de datos:
  6.     $conexion = mysql_connect('localhost', 'root', '') or die('Error al conectar con la base de datos.');
  7.     // Definimos la variable y seleccionamos la base de datos a ser utilizada:
  8.     $basededatos = mysql_select_db('galeria', $conexion) or die('La base de datos seleccionada no existe.');
  9.     // Definimos la variable y seleccionamos la tabla para generar el nombre de la foto:
  10.     $nombreid = mysql_query("SELECT * FROM fotos WHERE id ORDER BY id desc LIMIT 1");
  11.     // Fin base de datos
  12.      */
  13.     // Correo electrónico:
  14.     // Definimos la variable para el correo electrónico:
  15.     $correo_electronico = $_POST['correo_electronico'];
  16.     // Fin correo electrónico
  17.  
  18.     if (empty($_FILES['foto']['name'])) {
  19.         die('Debes seleccionar una imagen!');
  20.     }
  21.  
  22.     $error = false;
  23.  
  24.     $infoImage = getimagesize($_FILES['foto']['tmp_name']);
  25.  
  26.     if ($infoImage['mime'] != 'image/jpeg') {
  27.         echo 'Solo puedes subir imagenes JPG';
  28.         $error = true;
  29.     }
  30.  
  31.     $pesoMaximo = 250000;
  32.     if ($_FILES['foto']['size'] > $pesoMaximo) {
  33.         echo 'No puedes subir imagenes mayores a '.ceil($pesoMaximo / 1024).' kb';
  34.         $error = true;
  35.     }
  36.  
  37.     if (!filter_var($_POST['correo_electronico'], FILTER_VALIDATE_EMAIL)) {
  38.         echo 'Debes indicar un email valido!';
  39.         $error = true;
  40.     }
  41.  
  42.     if (!$error) {
  43.         /*
  44.         // Foto:
  45.         // Definimos las variables para la foto:
  46.         $directorio = 'fotos';
  47.         $fila = mysql_fetch_array($nombreid);
  48.         $id = $fila['id'];
  49.         $nombre = "chica_dosual.net_".$id.".jpg";
  50.         $tipo = getimagesize($_FILES['foto']['tmp_name']);
  51.         $rutatemporal = $_FILES['foto']['tmp_name'];
  52.         $tamaño = $_FILES['foto']['size'];
  53.         $rutafinal = $directorio.'/'.$nombre;
  54.  
  55.         if (!move_uploaded_file($rutatemporal, $rutafinal)) {
  56.             echo 'No se pudo mover la imagen a su destino final!';
  57.         }
  58.  
  59.         // Miniatura:
  60.         // Definimos las variables para la reación de la miniatura:
  61.         $rutaminiatura = $rutafinal;
  62.         $directoriominiatura = "fotos/miniaturas/miniatura_".$nombre;
  63.         $anchominiatura = 150;
  64.         $altominiatura = 150;
  65.         // Creamos el lienzo de la foto:
  66.         $miniatura = imagecreatetruecolor($anchominiatura, $altominiatura);
  67.         $fotominiatura = imagecreatefromjpeg($rutafinal);
  68.         // Obtenemos las dimensiones de la foto original:
  69.         $tamañominiatura = getimagesize($rutaminiatura);
  70.         $ancho_inicial = $tamañominiatura[0];
  71.         $alto_inicial = $tamañominiatura[1];
  72.         // Tomamos el lado más grande de la foto para tener una miniatura cuadrada:
  73.         $lado = $ancho_inicial > $alto_inicial ? $alto_inicial : $ancho_inicial;
  74.         // Creamos la miniatura en base a la foto original:
  75.         imagecopyresampled($miniatura, $fotominiatura, 0, 0, 0, 0, $anchominiatura, $altominiatura, $lado, $lado);
  76.         // Guardamos la foto en miniatura con una calidad de 100%:
  77.         imagejpeg($miniatura, $directoriominiatura, 100);
  78.         // Fin miniatura
  79.  
  80.         // Marca de agua:
  81.         // Definimos las variables para la marca de agua:
  82.         $rutamarcadeagua = 'imagenes/marca_de_agua.png';
  83.         $marcadeagua = imagecreatefrompng($rutamarcadeagua);
  84.         // Procedemos a crear el fichero JPEG final con la marca de agua a partir de la foto inicial:
  85.         $rutafoto = $directorio . '/' . $nombre;
  86.         $foto = imagecreatefromjpeg($rutafoto);
  87.         // Obtenemos las dimensiones de la foto y de la marca de agua:
  88.         $tamañofoto = getimagesize($rutafoto);
  89.         $tamañomarca = getimagesize($rutamarcadeagua);
  90.         $destino_x = $tamañofoto[0] - $tamañomarca[0] - 10;
  91.         $destino_y = $tamañofoto[1] - $tamañomarca[1] - 10;
  92.         // Pegamos la foto con la marca de agua:
  93.         imagecopymerge($foto, $marcadeagua, $destino_x, $destino_y, 0, 0,$tamañomarca[0], $tamañomarca[1], 100);
  94.         // Guardamos los cambios:
  95.         imagejpeg($foto, $rutafoto);
  96.         // Liberamos la memoria:
  97.         imagedestroy($foto);
  98.         imagedestroy($marcadeagua);
  99.         // Fin marca de agua
  100.        
  101.         // Construimos la cadena SQL para guardar los datos:
  102.         $sql = "INSERT INTO fotos (url,correo_electronico) values('" . $rutafinal . "','" . $correo_electronico . "')";
  103.          
  104.         // Informamos el resultado de la operación:
  105.         $respuesta = mysql_query($sql, $conexion);
  106.         if ($respuesta) {
  107.             echo 'La foto ha sido enviada correctamente.';
  108.         } else {
  109.             echo 'Error al enviar la foto.';
  110.         }
  111.         */
  112.     }
  113. }
  114. ?>
  115. <!doctype html>
  116. <html lang="en">
  117. <head>
  118.     <meta charset="UTF-8">
  119.     <title>Document</title>
  120. </head>
  121. <body>
  122.     <form action="" method="post" enctype="multipart/form-data">
  123.         <p><label for="correo_elecronico">Email</label><input type="text" name="correo_electronico"></p>
  124.         <p><label for="foto">Foto</label><input type="file" name="foto"></p>
  125.         <p><input type="submit" value="Enviar"></p>
  126.     </form>
  127. </body>
  128. </html>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)