Hola de nuevo Nemutagk.
He seguido tu ejemplo y adaptándolo un poco a lo anterior parece que ahora todo va correctamente tanto en mi servidor local como en el de la web. También le he añadido unas notas para ir entendiendo paso a paso lo que he hecho, (si hay algo mal o que no he comprendido en esas anotaciones dame un aviso si puedes
)
Código PHP:
Ver original<?php
//Si existe el archivo
if (isset($_FILES['archivo'])) {
//Si es archivo es subido al enviar
{
//Tamaño máximo del archivo
$fileSize = 512000; //500kb
//Si el tamaño del archivo es igual o menor que 500kb
if ($_FILES['archivo']['size'] <= $fileSize)
{
//Obtengo el tamaño del archivo
//Compruebo el tipo de archivo
'image/jpg',
'image/jpeg',
'image/gif',
'image/png'
);
//Si el tipo de archivo es correcto
$mimeTypeValid = in_array($info['mime'], $validTypes) ?
true : false; if ($mimeTypeValid)
{
//Si el directorio para subir el archivo no está creado lo creo y abro los puertos.
{
}
//Preparo la extensión.
switch($mimeTypeValid)
{
case'image/jpeg';
$ext=".jpg";
break;
case'image/gif';
$ext=".gif";
break;
case'image/png';
$ext=".png";
break;
case'image/x-png';
$ext=".png";
break;
}
// Creamos la cadena aletoria
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cad1 = "";
for($i=0;$i<12;$i++)
{
}
// Fin de la creacion de la cadena aletoria
$nombre_imagen1=$cad1;
//En caso de que tenga espacios los sustituyo por un guión bajo
//Le añado la extensión
$nombre_imagen1=$nombre_imagen1.$ext;
//Subo el archivo
{
//Lo envio a la base de datos.
$enviar="Insert into noticias (titulo, noticia, imagen, fecha) values ('".$_POST["titulo"]."','".$_POST["noticia"]."','".$nombre_imagen1."', now())";
{
echo "Noticia enviada correctamente";
}
else
{
}
}
else
{
echo '<p>No se pudo subir el archivo, '.$_FILES['archivo']['error'].'</p>';
}
}
else
{
echo '<p>tipo de archivo invalido!</p>';
}
}
else
{
echo '<p>Peso superado!</p>';
}
}
else
{
/*echo "No lleva imágenes y preparo el envío sin imagen.";*/
$enviar="Insert into noticias (titulo, noticia, fecha) values ('".$_POST["titulo"]."','".$_POST["noticia"]."', now())";
{
echo "Noticia enviada correctamente";
}
else
{
}
}
}
?>
Código HTML:
Ver original<form action="" id="enviar-noticia" name"enviar-noticia" method="post" enctype="multipart/form-data" > <input type="text" id="titulo" name="titulo" size="80" required /><br /> <input type="file" id="archivo" name="archivo" title="Enviar imagen" /> <!--<input type="file" id="imagen1" name="imagen1" title="Enviar imagen" /> -->
<input type="submit" id="enviar" name="enviar" value="Enviar">
Lo único que veo que por ejemplo en mi servidor local la parte de crear el directorio para las imagenes y luego abrirlo va perfecto pero claro en el sevidor real medaba problemas
Lo he abierto desde el panel de control del servidor dejandolo a 777, ¿es la manera más correcta o debería de hacer otro paso para mayor seguridad?
Ahora me falta seguir con este código para intentar redimensionar imágenes y adaptarla a algunos tamaños por si el usuario las sube con su camara web a 2 o 3mb pero eso ya será el próximo paso.
Muchas gracias por la gran explicación y la gran ayuda.
Saludos.