Formulario de envío:
Código:
Archivo php:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Envía tu foto</title> </head> <body> <form action="enviar.php" method="post" enctype="multipart/form-data" name="formulario" id="formulario"> <p> <label>Ingresa tu correo electrónico: <input type="text" name="correo_electronico" id="correo_electronico" /> </label> </p> <p> <label>Selecciona la foto: <input type="file" name="foto" id="foto" /> </label> </p> <p> <input type="submit" name="enviar" id="enviar" value="Enviar" /> </p> </form> </body> </html>
Código:
Estaría muy agradecido si me ayudan a mejorar el código y hacerlo mas seguro, ademas de seguro que se me pasaron algunos detalles que ustedes como profesionales podrían notarlo. Muchas gracias. <?php // Base de datos: // Definimos la variable y realizamos la conexión con la base de datos: $conexion = mysql_connect('localhost', 'root', '') or die('Error al conectar con la base de datos.'); // Definimos la variable y seleccionamos la base de datos a ser utilizada: $basededatos = mysql_select_db('galeria', $conexion) or die('La base de datos seleccionada no existe.'); // Definimos la variable y seleccionamos la tabla para generar el nombre de la foto: $nombreid = mysql_query("SELECT * FROM fotos WHERE id ORDER BY id desc LIMIT 1"); // Fin base de datos // Correo electrónico: // Definimos la variable para el correo electrónico: $correo_electronico = $_POST['correo_electronico']; // Fin correo electrónico // Foto: // Definimos las variables para la foto: $directorio = 'fotos'; $fila = mysql_fetch_array($nombreid); $id = $fila['id']; $nombre = "chica_dosual.net_".$id.".jpg"; $tipo = $_FILES['foto']['type']; $rutatemporal = $_FILES['foto']['tmp_name']; $tamaño = $_FILES['foto']['size']; $rutafinal = $directorio.'/'.$nombre; if ($_POST['enviar']) { if ($tipo == "image/jpeg") { if ($tamaño <= 2000000) { // Movemos la foto al directorio de destino: move_uploaded_file($rutatemporal, $rutafinal); }else{ echo ("No cargue esta página directamente."); } }else{ echo ("Sólo se pueden enviar fotos en formato JPG."); } }else{ echo ("La foto supera el tamaño máximo permitido."); } // Fin foto // Miniatura: // Definimos las variables para la reación de la miniatura: $rutaminiatura = $rutafinal; $directoriominiatura = "fotos/miniaturas/miniatura_".$nombre; $anchominiatura = 150; $altominiatura = 150; // Creamos el lienzo de la foto: $miniatura = imagecreatetruecolor($anchominiatura, $altominiatura); $fotominiatura = imagecreatefromjpeg($rutafinal); // Obtenemos las dimensiones de la foto original: $tamañominiatura = getimagesize($rutaminiatura); $ancho_inicial = $tamañominiatura[0]; $alto_inicial = $tamañominiatura[1]; // Tomamos el lado más grande de la foto para tener una miniatura cuadrada: $lado = $ancho_inicial > $alto_inicial ? $alto_inicial : $ancho_inicial; // Creamos la miniatura en base a la foto original: imagecopyresampled($miniatura, $fotominiatura, 0, 0, 0, 0, $anchominiatura, $altominiatura, $lado, $lado); // Guardamos la foto en miniatura con una calidad de 100%: imagejpeg($miniatura, $directoriominiatura, 100); // Fin miniatura // Marca de agua: // Definimos las variables para la marca de agua: $rutamarcadeagua = 'imagenes/marca_de_agua.png'; $marcadeagua = imagecreatefrompng($rutamarcadeagua); // Procedemos a crear el fichero JPEG final con la marca de agua a partir de la foto inicial: $rutafoto = $directorio . '/' . $nombre; $foto = imagecreatefromjpeg($rutafoto); // Obtenemos las dimensiones de la foto y de la marca de agua: $tamañofoto = getimagesize($rutafoto); $tamañomarca = getimagesize($rutamarcadeagua); $destino_x = $tamañofoto[0] - $tamañomarca[0] - 10; $destino_y = $tamañofoto[1] - $tamañomarca[1] - 10; // Pegamos la foto con la marca de agua: imagecopymerge($foto, $marcadeagua, $destino_x, $destino_y, 0, 0,$tamañomarca[0], $tamañomarca[1], 100); // Guardamos los cambios: imagejpeg($foto, $rutafoto); // Liberamos la memoria: imagedestroy($foto); imagedestroy($marcadeagua); // Fin marca de agua // Construimos la cadena SQL para guardar los datos: $sql = "INSERT INTO fotos (url,correo_electronico) values('" . $rutafinal . "','" . $correo_electronico . "')"; // Informamos el resultado de la operación: $respuesta = mysql_query($sql, $conexion); if ($respuesta) { echo 'La foto ha sido enviada correctamente.'; } else { echo 'Error al enviar la foto.'; } ?>