Foros del Web » Programando para Internet » PHP »

no puedo subir imagen a una carpeta en mi localhost

Estas en el tema de no puedo subir imagen a una carpeta en mi localhost en el foro de PHP en Foros del Web. hola alguien puede ayudarme en esto tengo un perfil de usuarios , que los usuarios registrados puedan subir foto de perfil con este codigo no ...
  #1 (permalink)  
Antiguo 04/01/2014, 09:23
andaluz7
Invitado
 
Mensajes: n/a
Puntos:
no puedo subir imagen a una carpeta en mi localhost

hola alguien puede ayudarme en esto tengo un perfil de usuarios , que los usuarios registrados puedan subir foto de perfil con este codigo no se porque se subi solo el nombre de la imagen o la ruta pero la imagen no aparece en la carpeta (imagenes )
gracias ante todo

este es mi codigo
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.  
  5.     session_start();
  6.     include('acceso_db.php'); // incluímos los datos de conexión a la BD
  7.     if(isset($_SESSION['usuario_nombre'])) { // comprobamos que la sesión esté iniciada
  8.         if(isset($_POST['enviar'])) {
  9.             if($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
  10.                 echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
  11.             }else {
  12.                 $usuario_nombre = $_SESSION['usuario_nombre'];
  13.                 $usuario_clave = mysql_real_escape_string($_POST["usuario_clave"]);
  14.                 $usuario_clave = md5($usuario_clave); // encriptamos la nueva contraseña con md5
  15.                 $sql = mysql_query("UPDATE usuarios SET ruta='".$ruta."' WHERE usuario_nombre='".$usuario_nombre."'");
  16.                 if($sql) {
  17.                     echo "Contraseña cambiada correctamente.";
  18.                 }else {
  19.                     echo "Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>";
  20.                 }
  21.             }
  22.         }else {
  23. ?>
  24.         <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  25.          
  26.  
  27.  
  28.   <p>Seleccione la ruta:
  29.     <input type="file" name="imagen"/>
  30.  
  31.      
  32.             <input type="submit" name="enviar" value="Enviar" />
  33.         </form>
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. <?php
  41.  
  42.  
  43. $rutaEnServidor='imagenes';
  44. $rutaTemporal=$_FILES['imagen']['tmp_name'];
  45. $nombreImagen=$_FILES['imagen']['name'];
  46. $rutaDestino=$rutaEnServidor.'/'.$nombreImagen;
  47. move_uploaded_file($rutaTemporal,$rutaDestino);
  48.         }
  49.     }else {
  50.         echo "Acceso denegado.";
  51.     }
  52. ?>
  #2 (permalink)  
Antiguo 04/01/2014, 09:28
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 12 años
Puntos: 3
Respuesta: no puedo subir imagen a una carpeta en mi localhost

lo primero comprueba que la carpeta imágenes tenga permisos CHMOD 777 sino fuera eso indica el error que te sale.
Saludos!
  #3 (permalink)  
Antiguo 04/01/2014, 09:47
Avatar de andinog  
Fecha de Ingreso: febrero-2012
Mensajes: 50
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: no puedo subir imagen a una carpeta en mi localhost

Creo que te falto el atributo enctype:

Código HTML:
Ver original
  1. <form method="post" enctype="multipart/form-data">

y

tal vez podrias borrar

Código PHP:
Ver original
  1. action="<?=$_SERVER['PHP_SELF']?>"

ya que cuando dejas action en blanco, se refiere a la misma pagina.

Saludos
__________________
"El que nada duda nada sabe"
Ser Programador
  #4 (permalink)  
Antiguo 04/01/2014, 11:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: no puedo subir imagen a una carpeta en mi localhost

Me parece que estás intentando guardar el archivo cuando NO envías datos, es decir, cuando no tienes una imagen para cargar. El bloque de código que guarda el archivo, debe ejecutarse cuando la condición se cumple:

Código PHP:
Ver original
  1. if(isset($_POST['enviar'])) {
  2.      if($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
  3.           echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
  4.      }else {
  5.           $usuario_nombre = $_SESSION['usuario_nombre'];
  6.           $usuario_clave = mysql_real_escape_string($_POST["usuario_clave"]);
  7.           $usuario_clave = md5($usuario_clave); // encriptamos la nueva contraseña con md5
  8.           $sql = mysql_query("UPDATE usuarios SET ruta='".$ruta."' WHERE usuario_nombre='".$usuario_nombre."'");
  9.           if($sql) {
  10.                echo "Contraseña cambiada correctamente.";
  11.                
  12.                //Aquí subes la imagen
  13.                $rutaEnServidor='imagenes';
  14.                $rutaTemporal=$_FILES['imagen']['tmp_name'];
  15.                $nombreImagen=$_FILES['imagen']['name'];
  16.                $rutaDestino=$rutaEnServidor.'/'.$nombreImagen;
  17.                move_uploaded_file($rutaTemporal,$rutaDestino);
  18.           }else {
  19.                echo "Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>";
  20.           }
  21.      }
  22. }

Cita:
Iniciado por andinog Ver Mensaje
Creo que te falto el atributo enctype:

Código HTML:
Ver original
  1. <form method="post" enctype="multipart/form-data">
No es necesario si solamente se subirá un archivo al servidor.

Cita:
Iniciado por andinog Ver Mensaje
Tal vez podrías borrar

Código PHP:
Ver original
  1. action="<?=$_SERVER['PHP_SELF']?>"

ya que cuando dejas action en blanco, se refiere a la misma pagina.

Saludos
Es lo mismo, también da igual si no colocas el atributo action.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: carpeta, localhost, mysql, sql, 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:45.