Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2012, 11:44
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Problema con subida de imagenes en PHP

Bueno, el caso es que estoy realizando un sistema de registro para mi web, solo nombre, apellido, email y alguna cosilla mas. El problema viene a la hora de subir el avatar del usuario al servidor, he comprobado, usando una variable error, que el archivo llega a la carpeta temporal, pero no se mueve a la definitiva que yo deseo.

Aquí está el código:
Código PHP:
<?php
session_start
();
//Datos para establecer la conexion con la base de mysql...
mysql_connect('localhost','root','')or die ('Ha fallado la conexión a la base de datos: '.mysql_error());
mysql_select_db('usuarios')or die ('Ha fallado la conexión a la base de datos: '.mysql_error());
// Verificamos si se han enviado ya las variables necesarias...
if (isset($_POST['condiciones'])) {
  
$nombre $_POST["nombre"];
  
$contraseña $_POST["contraseña"];
  
$contraseña2 $_POST["contraseña2"];
  
$email $_POST["email"];
  
$sexo $_POST["sexo"];
  
$dianacimiento $_POST["dianacimiento"];
  
$mesnacimiento $_POST["mesnacimiento"];
  
$añonacimiento $_POST["añonacimiento"];
  
$cumpleaños = ($_POST["dianacimiento"]."-".$_POST["mesnacimiento"]."-".$_POST["añonacimiento"]);
  
$fecha date("y-m-d");
  
$apellidos $_POST["apellidos"];
  
//Variable para saber si se produce algun error...
  
$error='0'
  
//La variable 'nombre_archivo' indica el directorio y el nombre con el que se guardará el mismo...
  
$nombre_archivo "/fotos/perfil/".$_FILES['avatar']['name']; 
  
$avatar $_FILES['avatar']['name'];
  
//La variable 'tipo_archivo' indica la extensión del mismo...
  
$tipo_archivo $_FILES['avatar']['type']; 
  
//La variable 'tamano_archivo' indica en tamaño en bytes del mismo...
  
$tamano_archivo $_FILES['avatar']['size'];  
  
// Comprobamos si el correo o la imagen ya existían...
  
$checkemail mysql_query("SELECT email FROM infopersonal WHERE email='$email'");
  
$email_exist mysql_num_rows($checkemail);
  
$checkavatar mysql_query("SELECT avatar FROM infopersonal WHERE avatar='$nombre_archivo'");
  
$avatar_exist mysql_num_rows($checkavatar);
  if (
$email_exist>0) {
    
$error='1';
  }
  else if (
$avatar_exist>0) {
    
$error='2';
  }
  else { 
    if(
$nombre_archivo!='/fotos/perfil/'){ 
      if (
$tamano_archivo 500000) {  
        
//Si el tamaño o la extensión del archivo no son correctas se pone como valor a la variable 'error' un '3'...
        
$error='3';                  
      }
      else {  
        if (
is_uploaded_file($_FILES['avatar']['tmp_name'])){ 
          if (
move_uploaded_file($_FILES['avatar']['tmp_name'], $nombre_archivo)){ 
            
// El archivo ha sido movido a su destino final correctamente   
          
}    
          else {
            
// El archivo no se ha movido correctamente a su destino final
            
$error='5'
          }          
        }
        else { 
          
//No se ha podido guardar el archivo en el servidor, por eso la variable 'error' recibe como valor un '4'...
          
$error='4';                
        }  
      } 
    }
  }
}
// Comprueba si ha sucedido algún error y redirige... 
if ($error=='1'){ 
  
header("Location: /errores/falloregistro.php?id=1");
  die(); 

else if (
$error=='2'){ 
  
header("Location: /errores/falloregistro.php?id=2");
  die();  
}
else if (
$error=='3'){ 
  
header("Location: /errores/falloregistro.php?id=3");
  die();  
}
else if (
$error=='4'){ 
  
header("Location: /errores/falloregistro.php?id=4");
  die();  
}
else if (
$error=='5'){ 
  
header("Location: /errores/falloregistro.php?id=5");
  die();  
}
else if (
$error=='0') {
  
mysql_query("INSERT INTO infopersonal (nombre,apellidos,contraseña,email,fecha,sexo,cumpleaños,avatar) 
  values ('$nombre','$apellidos','$contraseña','$email','$fecha','$sexo','$cumpleaños','$nombre_archivo')"
);  
  
header("Location: /correctos/registrado.php");
}
?>
Siempre recibo como error el número 5, que significa que no se movio correctamente el archivo a su directorio final, que como error de PHP me dice esto:

Cita:
Warning: move_uploaded_file(/fotos/perfil/Mds2ZwRfsLo2dSDYAA.jpg): failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-12.0\www\php\registrar.php on line 47

Warning: move_uploaded_file(): Unable to move 'C:\Program Files (x86)\EasyPHP-12.0\tmp\php8C0C.tmp' to '/fotos/perfil/Mds2ZwRfsLo2dSDYAA.jpg' in C:\Program Files (x86)\EasyPHP-12.0\www\php\registrar.php on line 47
Espero que me podáis echar una mano, porque llevo trabado con esto un rato ya...

P.D: Estoy trabajando en un servidor local con EasyPHP, instalado sobre Windows 7, así que no he podido comprobar si el fallo está en los permisos de la carpeta...