Foros del Web » Programando para Internet » PHP »

Problema con subida de imagenes en PHP

Estas en el tema de Problema con subida de imagenes en PHP en el foro de PHP en Foros del Web. 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 ...
  #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...
  #2 (permalink)  
Antiguo 08/07/2012, 12:56
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Problema con subida de imagenes en PHP

has puesto el slash correctamente en la url , la carpeta existe , posee permisos , en el campo form tienes el formato multipart ?

Saludos
  #3 (permalink)  
Antiguo 08/07/2012, 13:03
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con subida de imagenes en PHP

La carpeta existe, no se como cambiarle los permisos a algo equivalente a 0777, ya que es sobre Windows, el enctype esta correctamente configurado en el formulario...

Lo del slash en la url no te entendí...
  #4 (permalink)  
Antiguo 08/07/2012, 13:04
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con subida de imagenes en PHP

El caso es que el archivo si se sube correctamente alacarpeta temporal del server, el problema sale al moverlo a su dirección final...
  #5 (permalink)  
Antiguo 08/07/2012, 13:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 17 años
Puntos: 20
Exclamación Respuesta: Problema con subida de imagenes en PHP

Prueba con esto asi sin poner más cosas en un archivo independiente :

Código PHP:

/// Upload Foto Slide ///
$dir_up="./imagenes/";

$f="".$_FILES[name][imagen]."";

$ext=explode(".",$f);
$id_pic=date("dmYHis");

$f=str_replace("$f","".$id_pic.".".strtolower($ext[1])."",$f);

if (
$f!="")
{
move_uploaded_file($_FILES[tmp_name][imagen],$dir_up."".$f."" );
}
/// 

Y me dices , Saludos
  #6 (permalink)  
Antiguo 08/07/2012, 13:25
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con subida de imagenes en PHP

Cita:
Iniciado por fr1974 Ver Mensaje
Prueba con esto asi sin poner más cosas en un archivo independiente :

Código PHP:

/// Upload Foto Slide ///
$dir_up="./imagenes/";

$f="".$_FILES[name][imagen]."";

$ext=explode(".",$f);
$id_pic=date("dmYHis");

$f=str_replace("$f","".$id_pic.".".strtolower($ext[1])."",$f);

if (
$f!="")
{
move_uploaded_file($_FILES[tmp_name][imagen],$dir_up."".$f."" );
}
/// 

Y me dices , Saludos
Tuve que cambiar 'imagen' por 'avatar' ya que es el nombre de mi campo, y añadirle las comillas... quedo así:

Código PHP:
<?php 
$dir_up
="./imagenes/"

$f="".$_FILES['name']['avatar'].""

$ext=explode(".",$f); 
$id_pic=date("dmYHis"); 

$f=str_replace("$f","".$id_pic.".".strtolower($ext[1])."",$f); 

if (
$f!=""

move_uploaded_file($_FILES['tmp_name']['avatar'],$dir_up."".$f."" ); 

?>
Y dio este problema...
Cita:
Notice: Undefined index: name in C:\Program Files (x86)\EasyPHP-12.0\www\php\subirfoto.php on line 4

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-12.0\www\php\subirfoto.php on line 9
El problema sería que cuando se dice $_FILES['tmp_name']['avatar'], tendría que ser:
$_FILES['avatar']['tmp_name']
Ya que definimos la id primero, pero cuando lo hago según este método me da el mismo error que al principio de todo...
  #7 (permalink)  
Antiguo 09/07/2012, 13:54
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con subida de imagenes en PHP

Nadie más puede ayudar?
  #8 (permalink)  
Antiguo 09/07/2012, 14:05
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Problema con subida de imagenes en PHP

Si tenes dudas de como subir archivos lee esto http://www.desarrolloweb.com/articulos/1307.php
  #9 (permalink)  
Antiguo 09/07/2012, 14:32
laventanadewindows
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con subida de imagenes en PHP

No tengo dudas, tengo dudas sobre como solucionar problemas, pero da igual, ya halle un método, no se si sera muy ortodoxo pero funciona...

Sustituí esto:

Cita:
$nombre_archivo = "/fotos/perfil/".$_FILES['avatar']['name'];
Por esto:

Cita:
$direccion = $_SERVER['DOCUMENT_ROOT'].'/fotos/perfil';
$nombre_archivo = $direccion .'/'.basename($_FILES['avatar']['name']);
Indicando el documento ROOT del server funciona, ya que mi problema es que no lo localizaba...

Etiquetas: imagenes, mysql, registro, subida, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.