12/07/2013, 07:16
|
| | Fecha de Ingreso: julio-2013 Ubicación: Paraguay
Mensajes: 71
Antigüedad: 11 años, 7 meses Puntos: 0 | |
Galería de fotos en php Quiero compartir con ustedes esta galería de fotos que estuve haciendo, soy nuevo en php y leyendo un poco aquí y allá pude obtener el siguiente código:
Formulario de envío:
Código:
<!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>
Archivo php:
Código:
<?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.';
}
?>
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. |