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<?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';
$id = $fila['id'];
$nombre = "chica_dosual.net_".$id.".jpg";
$rutatemporal = $_FILES['foto']['tmp_name'];
$tamaño = $_FILES['foto']['size'];
$rutafinal = $directorio.'/'.$nombre;
// Comprobamos que el tipo y el tamaño de la foto sean los correctos:
if ($_POST['enviar']) {
if (empty($_FILES['foto'])) { die ("Seleccione la foto que desea enviar."); }
if (isset($tipo['mime']) && $tipo['mime'] == "image/jpeg") { if ($tamaño <= 2500000) {
// Movemos la foto al directorio de destino:
// Si la foto no cumple los requisitos, mostramos los mensajes:
}else{
die ("No cargue esta página directamente."); }
}else{
die ("Sólo se pueden enviar fotos en formato JPG."); }
}else{
die ("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:
// Obtenemos las dimensiones de la foto original:
$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';
// Procedemos a crear el fichero JPEG final con la marca de agua a partir de la foto inicial:
$rutafoto = $directorio . '/' . $nombre;
// Obtenemos las dimensiones de la foto y de la marca de agua:
$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:
// Liberamos la memoria:
// 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:
if ($respuesta) {
echo 'La foto ha sido enviada correctamente.';
} else {
echo 'Error al enviar la foto.';
}
?>
Cual podria ser la causa de ese pequeño error?