buenas tardes foreros. estoy con un grave problema a la hora de subir fotografias a mi red social hecha en php. resulta que puedo subir fotos grandes,pequeñas, etc, pero ahora no me deja subir una fotografia de 3 megas que tengo. y no entiendo el porque, cuando le hago el $_FILE['upload1']['size'], me devuelve 0, es decir, me dice que no tiene tamaño, cuando si tiene nombre ($_FILE['upload1']['name']
alguien sabe a que se debe este mega fail?porque me estoy jugando el modulo por ese error sin controlar. un saludo y mil gracias
este es el formulario para subir hasta 4 fotografias
Código:
<form action="subir.php" method="post" enctype="multipart/form-data">
Nombre de la imagen: <input name="foto1" type="text" size="40" maxlength="50" />
<input name="upfile1" id="upfile" type="file"/><br/>
Nombre de la imagen: <input name="foto2" type="text" size="40" maxlength="50" />
<input name="upfile2" id="upfile" type="file"/><br/>
Nombre de la imagen: <input name="foto3" type="text" size="40" maxlength="50" />
<input name="upfile3" id="upfile" type="file"/><br/>
Nombre de la imagen: <input name="foto4" type="text" size="40" maxlength="50" />
<input name="upfile4" id="upfile" type="file"/><br/>
<input name="action" type="hidden" value="4500000" />
<input type="submit" value="Enviar fotos" style="margin-bottom:10px;"/>
</form>
y este es el de subida al servidor MySql
Código PHP:
Ver original<?php
$lifetime=5000;
if(!isset($_SESSION['valid_user'])){ echo "<script> alert('debe loguearse para entrar') </script>";
echo "<script> location.href='principal.php'</script>";
}
$num=0;
$max=4500000;// 4.5Mb
//conecto con la base de datos con las credenciales
$user=$_SESSION['valid_user'];
//busco todas las fotos subidas por el usuario, para contabilizarlas
$sql1=mysql_query("SELECT * FROM fotos where usuario='".$user."'"); $numeroFotos=0;
$numeroFotos++;
}
//el nombre del directorio donde se guardaran las fotografias sera igual al email del usuario, para evitar confusiones y violaciones de clave primaria
$nombreDir=$_SESSION['valid_user'];
//lo pongo a minusculas, para evitar equivocaciones a la hora de buscar en base de datos
$nombreDir=strtr(strtolower($nombreDir), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ", "àáâãäåæçèéêëìíîïðñòóôõöøùüú"); $nuevodirectorio="fotos/".$nombreDir;
if (!is_dir($nuevodirectorio)){ mkdir ($nuevodirectorio); }
//subida de las 4 fotografias
$uploaddir = $nuevodirectorio."/";
$nombre1=$_POST['foto1'];
//la siguiente linea es la linea que me devuelve 0, pero si meto otra fotografia, no me da 0, me da el tamaño real de la fotografia. el problema
//viene cuando quiero introducir esta fotografia:buena.JPEG, tamaño: 3.03MB, 3739*2713
//la redimension la hago al mostrar la imagen, eso es lo de menos.
$filesize1 = $_FILES['upfile1']['size'];
$filename1 = trim($_FILES['upfile1']['name']); $filename1 = substr($filename1, -20); $nombre2=$_POST['foto2'];
$filesize2 = $_FILES['upfile2']['size'];
$filename2 = trim($_FILES['upfile2']['name']); $filename2 = substr($filename2, -20); $nombre3=$_POST['foto3'];
$filesize3 = $_FILES['upfile3']['size'];
$filename3 = trim($_FILES['upfile3']['name']); $filename3 = substr($filename3, -20); $nombre4=$_POST['foto4'];
$filesize4 = $_FILES['upfile4']['size'];
$filename4 = trim($_FILES['upfile4']['name']); $filename4 = substr($filename4, -20); //aqui declaro la ruta completa de la fotografia a subir
$foto1=$nombreDir."/".$filename1;
$foto2=$nombreDir."/".$filename2;
$foto3=$nombreDir."/".$filename3;
$foto4=$nombreDir."/".$filename4;
$cantidadSubidas=0;
if($filesize1 < $max){
//a partir de aqui ya no continua, ya que el tamaño de la fotografia es 0, no puedo continuar.
//da igual que quite la condicion filesize1 > 0, me dice error de conexion, tampoco parece tener tmp_name. que es lo que ocurre? (asi con
//cualquiera de los 4 huecos de subida)
if($filesize1 > 0){
if((ereg(".jpg", $filename1)) || (ereg(".gif", $filename1)) || (ereg(".JPG", $filename1))|| (ereg(".GIF", $filename1))){ $uploadfile = $uploaddir . $filename1;
$numeroFotos++;
mysql_query("INSERT INTO fotos VALUES('".$user."','".$foto1."',".$numeroFotos.",'".$nombre1."','si','no',CURRENT_TIMESTAMP)");
$cantidadSubidas++;
} else {
echo "<script> alert('error de conexion')</script>";
}
} else {
echo "<script> alert('Sólo se permiten imágenes en formato jpg. y gif., no se ha podido adjuntar.')</script>";
}
}
}else {
echo "<script> alert('La imagen ".$filename1." que ha intentado adjuntar es mayor de 2.5 Mb, si desea cambie el tamaño del archivo y vuelva a intentarlo.')</script>";
}
if($filesize2 < $max){
if($filesize2 > 0){
if((ereg(".jpg", $filename2)) || (ereg(".gif", $filename2)) || (ereg(".JPG", $filename2))|| (ereg(".GIF", $filename2))){ $uploadfile = $uploaddir . $filename2;
$numeroFotos++;
mysql_query("INSERT INTO fotos VALUES('".$user."','".$foto2."',".$numeroFotos.",'".$nombre2."','si','no',CURRENT_TIMESTAMP)"); $cantidadSubidas++;
} else {
echo "<script> alert('error de conexion')</script>";
}
} else {
echo "<script> alert('Sólo se permiten imágenes en formato jpg. y gif., no se ha podido adjuntar.')</script>";
}
}
}else {
echo "<script> alert('La imagen ".$filename2." que ha intentado adjuntar es mayor de 2.5 Mb, si desea cambie el tamaño del archivo y vuelva a intentarlo.')</script>";
}
if($filesize3 < $max){
if($filesize3 > 0){
if((ereg(".jpg", $filename3)) || (ereg(".gif", $filename3)) || (ereg(".JPG", $filename3))|| (ereg(".GIF", $filename3))){ $uploadfile = $uploaddir . $filename3;
$numeroFotos++;
mysql_query("INSERT INTO fotos VALUES('".$user."','".$foto3."',".$numeroFotos.",'".$nombre3."','si','no',CURRENT_TIMESTAMP)"); $cantidadSubidas++;
} else {
echo "<script> alert('error de conexion')</script>";
}
} else {
echo "<script> alert('Sólo se permiten imágenes en formato jpg. y gif., no se ha podido adjuntar.')</script>";
}
}
}else {
echo "<script> alert('La imagen ".$filename3." que ha intentado adjuntar es mayor de 2.5 Mb, si desea cambie el tamaño del archivo y vuelva a intentarlo.')</script>";
}
if($filesize4 < $max){
if($filesize4 > 0){
if((ereg(".jpg", $filename4)) || (ereg(".gif", $filename4)) || (ereg(".JPG", $filename4))|| (ereg(".GIF", $filename4))){ $uploadfile = $uploaddir . $filename4;
$numeroFotos++;
mysql_query("INSERT INTO fotos VALUES('".$user."','".$foto4."',".$numeroFotos.",'".$nombre4."','si','no',CURRENT_TIMESTAMP)"); $cantidadSubidas++;
} else {
echo "<script> alert('error de conexion')</script>";
}
} else {
echo "<script> alert('Sólo se permiten imágenes en formato jpg. y gif., no se ha podido adjuntar.')</script>";
}
}
}else {
echo "<script> alert('La imagen ".$filename4." que ha intentado adjuntar es mayor de 2.5 Mb, si desea cambie el tamaño del archivo y vuelva a intentarlo.')</script>";
}
//echo "<script> alert('fotos subidas correctamente: ".$cantidadSubidas."')</script>";
echo "<script> location.href='inicio.php'</script>";
?>