Foros del Web » Programando para Internet » PHP »

problema al cambiar foto de perfil

Estas en el tema de problema al cambiar foto de perfil en el foro de PHP en Foros del Web. Hola, hice una funcion que sirve para cambiar la foto de perfil, a la funcion que esta en el archivo conexion.php, puse dentro de un ...
  #1 (permalink)  
Antiguo 02/11/2011, 18:54
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 13 años, 3 meses
Puntos: 9
Pregunta problema al cambiar foto de perfil

Hola, hice una funcion que sirve para cambiar la foto de perfil, a la funcion que esta en el archivo conexion.php, puse dentro de un if, la consulta para cambiar los datos y el move_uploaded_file , pero al ejecutarlo, envez de dar true, e introducir los datos, da false, y no se porque, aca le dejo los archivos perfil.php y conexion.php.

la funcion de cambiar la foto esta en la linea 85 de conexion.php
conexion.php :

Código PHP:
Ver original
  1. <?php
  2. $nombre_server[1] = 'localhost';
  3. $nombre_user[2] = 'root';
  4. $nombre_db[3] = 'estudiophp';
  5. $password[4] = '';
  6.  
  7.      $conexion = @mysql_connect($nombre_server[1],$nombre_user[2],$password[4]) or exit ('Los datos ingresados no existen');
  8.      mysql_select_db($nombre_db[3]) or exit('La base de datos no existe');
  9.  
  10.  
  11. if($_GET['desconectar'] == 1){//funcion de deslogeo
  12. $_SESSION['logeado'] = false;
  13. echo "Usted se a deslogeado con exito";
  14. }// cierro deslogeo
  15.  
  16.  
  17. if($_GET['borrar'] == 1){//funcion de eliminar cuenta
  18. mysql_query("DELETE FROM pruebas WHERE (nick=".$_SESSION['nick'].")");
  19. echo "Su cuenta a sido eliminada";
  20. $_SESSION['logeado'] = false;
  21. }//cierro eliminar cuenta
  22.  
  23.  
  24. if($_GET['cambiar'] == 1){//funcion de cambiar contraseña
  25.    if(isset($_POST['mandar'])){
  26.         if(isset($_POST['pass']) && isset($_POST['confnuevapass']) && isset($_POST['nuevapass'])){              $pass = $_POST['nuevapass'];
  27.                     $nick = $_SESSION['nick'];
  28.           $resultado = mysql_query("SELECT pass FROM pruebas WHERE (nick = '$nick')");
  29.           $fila = mysql_fetch_array($resultado);
  30.           if($fila['pass'] == md5($_POST['pass'])){
  31.             if($_POST['nuevapass'] == $_POST['confnuevapass']){
  32.                 if(mysql_query("UPDATE pruebas SET pass = md5('$pass') WHERE (nick = '$nick')")){
  33.                 echo "La contraseña se a cambiado con exito";
  34.                 }
  35.                 else{
  36.                 echo "No se a podido cambiar la contraseña, vuelva a intentar";
  37.                 }
  38.             }
  39.             else{
  40.             echo "Las contraseñas no coinciden";
  41.             }
  42.           }
  43.          else{
  44.             echo "La contraseña insertada no coincide con la de la base de datos";
  45.          }
  46.         }
  47.         else{
  48.         echo "Debera rellenar todos los campos";
  49.         }  
  50.    }
  51. ?>
  52. <form method="post" action="perfil.php?cambiar=1">
  53. contraseña anterior<input type="text" name="pass">
  54. nueva contraseña<input type="text" name="nuevapass">
  55. repetir contraseña<input type="text" name="confnuevapass">
  56. <input type="submit" name="mandar">
  57. </form>
  58. <?php
  59. }// cierro cambiar pass
  60.  
  61. if($_GET['dejarpuntos'] == 1){//abre funcion dejar puntos
  62.     $id = $_GET['id'];
  63.     if(isset($id)){
  64.         if($id != $_SESSION['id']){
  65.             $resultado = mysql_query("SELECT puntos FROM pruebas WHERE (id = '$id')");
  66.             $fila = mysql_fetch_array($resultado);
  67.             $puntos = $fila['puntos'];
  68.             $puntos = $puntos + 1;
  69.             if(mysql_query("UPDATE pruebas SET puntos = '$puntos' WHERE (id = $id)")){
  70.                 echo "Has dejado los puntos con exito";
  71.             }
  72.             else{
  73.                 echo "Error al dejar el punto, por favor vuelva a intentar";
  74.             }
  75.         }
  76.         else{
  77.             echo "No puede dejarse puntos a usted mismo";
  78.         }
  79.     }
  80.     else{
  81.         echo "No puede dejarse puntos a usted mismo";
  82.     }
  83. }//cierra funcion dejar puntos
  84. if($_GET['cambiarfoto'] == 1){//abro funcion cambiar foto perfil
  85.     if(isset($_POST['mandar'])){
  86.         $foto = trim($_FILES['foto']['name']);
  87.         $id = $_SESSION['id'];
  88.         $destino = "imagenes/".$foto;
  89.         if(mysql_query("UPLOAD pruebas SET imagen = '$foto' WHERE (id = '$id')") && move_uploaded_file($_FILES ['foto']['tmp_name'],$destino)){
  90.             echo "Has cambiado tu foto";
  91.             }
  92.         else{
  93.             echo "Hubo un error, intentelo mas tarde";
  94.         }
  95.     }  
  96.     ?>
  97.     <form method="post" action="perfil.php?id=<?php echo $_SESSION['id']; ?>&cambiarfoto=1" enctype="multipart/form-data">
  98.     <input type="file" name="foto" />
  99.     <input type="submit" name="mandar" />
  100.     </form>
  101.     <?php
  102. }//cierro funcion cambiar foto perfil
  103. if($_GET['recordar'] == 1){//abre recordar contraseña
  104.     if(isset($_POST['mandar'])){
  105.         if(isset($_POST['mail'])){
  106.             $mail = $_POST['mail'];
  107.             $resultado = mysql_query("SELECT nick, pass FROM pruebas WHERE (mail = 'mail')");
  108.             $fila = mysql_fetch_array($resultado);
  109.         }
  110.         else{
  111.             echo "Introduzca un mail valido";
  112.         }
  113.     }
  114. ?>
  115. <form method="post" action="perfil.php?recordar=1">
  116. Introduzca su mail<input type="text" name="mail" />
  117. <input type="submit" name="mandar" />
  118. </form>
  119. <?php
  120. }//cierro recordar contraseña
  121. ?>

perfil.php :

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. if($_SESSION['logeado'] == true){
  4.     $id = $_GET['id'];
  5.     if(isset($id)){//compruebo si id tiene valor
  6.     $resultado = mysql_query("SELECT nick, mail, imagen FROM pruebas WHERE (id = '$id')");
  7.     $fila = mysql_fetch_array($resultado);
  8.     if($_SESSION['nick'] == $fila['nick']){/* perfil de usuario logeado cuando id tiene valor, y si la sesion en que estoy logeado coincide con la de los datos trtaidos por la id, estoy en mi perfil*/
  9.         echo "<br />";
  10.         echo "Este es su perfil ".$_SESSION['nick'];
  11.         $destino = $fila['imagen'];
  12.         echo "<img width='100' height='100' src='imagenes/".$destino."'>";
  13.         ?>
  14.         </br></br>
  15.         <a href="login.php?desconectar=1">Salir</a>
  16.         </br>
  17.         </br>
  18.         <a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
  19.         </br>
  20.         </br>
  21.         <a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contrasena</a>
  22.         </br>
  23.         </br>
  24.         <a href="leermensaje.php">Leer mensajes privados</a>  
  25.         </br>
  26.         </br>
  27.         <a href="perfil.php?id=<?php echo $id; ?>&cambiarfoto=1">Cambiar foto de perfil</a>
  28.         <?php
  29.         $idperfil = $_GET['id'];
  30.         $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
  31.         while($fila = mysql_fetch_array($resultado)){
  32.             echo "<br/>";
  33.             echo "<br/>";
  34.             echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
  35.             echo "<br/>";
  36.             echo "----";
  37.             echo "<br/>";
  38.             echo "Comentario: ".$fila['comentario'];
  39.             echo "<br/>";
  40.             echo "---------------------------------------";
  41.             echo "<br/>";
  42.           }
  43.         }
  44.     else{/*perfil de otro usuario, porque el nick, no coincide con el de la persona logeada*/
  45.         echo "<br />";
  46.         echo "Este es el perfil de ".$fila['nick'].", y su mail es ".$fila['mail'];
  47.         $destino = $fila['imagen'];
  48.         echo "<br />";
  49.         echo "<br />";
  50.         echo "<img width='100' height='100' src='imagenes/".$destino."'>";
  51.         ?>
  52.         </br>
  53.         </br>
  54.         <a href="enviarmensaje.php">Enviar mensaje privado</a>  
  55.         </br>
  56.         </br>
  57.         <a href="<?php $_SERVER['PHP_SELF'] ?>?id=<?php echo $id; ?>&dejarpuntos=1">Dejar puntos para el Ranking!</a>  
  58.         </br>
  59.         <?php
  60.         $_SESSION['idreceptor'] = $_GET['id'];
  61.         if(isset($_POST['mandar'])){
  62.             if(isset($_POST['comentario'])){
  63.                 $comentario = $_POST['comentario'];
  64.                 $nombre = $_SESSION['nick'];
  65.                 $fecha = time();
  66.                 $datofecha = date("d-m-Y" , $fecha);
  67.                 $idperfil = $_GET['id'];
  68.                 $idnombre = $_SESSION['id'];
  69.                 if(mysql_query("INSERT INTO comentarios (comentario,nombre,fecha,idperfil,idnombre) VALUES ('$comentario','$nombre','$datofecha','$idperfil','$idnombre')")){
  70.                     echo "<br/>";
  71.                     echo "<br/>";
  72.                     echo " Comentario subido con exito";
  73.                 }
  74.                 else{
  75.                     echo "Hubo un fallo al poner el comentario, por favor vuelva a intentarlo";
  76.                 }
  77.             }
  78.             else{
  79.                 echo "Debe introducir un comentario";
  80.             }
  81.         }
  82.         ?>
  83.         <html xmlns="http://www.w3.org/1999/xhtml">
  84.         <head>
  85.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  86.         <title>Perfil</title>
  87.         </head>
  88.         <body>
  89.         <br/>
  90.         Deja tu comentario!
  91.         <form method="post" action="perfil.php?id=<?php echo $_GET['id']; ?>">
  92.         <textarea name="comentario"></textarea>
  93.         <input type="submit" name="mandar">
  94.         </form>
  95.         </body>
  96.         </html>
  97.     <?php
  98.         $idperfil = $_GET['id'];
  99.         $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
  100.         while($fila = mysql_fetch_array($resultado)){
  101.             echo "<br/>";
  102.             echo "<br/>";
  103.             echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
  104.             echo "<br/>";
  105.             echo "----";
  106.             echo "<br/>";
  107.             echo "Comentario: ".$fila['comentario'];
  108.             echo "<br/>";
  109.             echo "---------------------------------------";
  110.             echo "<br/>";
  111.           }
  112.     }
  113.   }
  114.   else{//perfil de usuario logeado cuando id no tiene valor
  115.         echo "<br />";
  116.         echo "Este es su perfil ".$_SESSION['nick'];
  117.         ?>
  118.         </br></br>
  119.         <a href="login.php?desconectar=1">Salir</a>
  120.         </br>
  121.         </br>
  122.         <a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
  123.         </br>
  124.         </br>
  125.         <a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contrasea</a>
  126.         </br>
  127.         </br>
  128.         <a href="leermensaje.php">Leer mensajes privados</a>  
  129.         </br>
  130.         </br>
  131.         <a href="perfil.php?id=<?php echo $_SESSION['id']; ?>&cambiarfoto=1">Cambiar foto de perfil</a>
  132.         <?php
  133.         $nick = $_SESSION['nick'];
  134.         $resultado = mysql_query("SELECT id FROM pruebas WHERE (nick = '$nick')");
  135.         $fila = mysql_fetch_array($resultado);
  136.         $idperfil = $fila['id'];
  137.         $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
  138.         while($fila = mysql_fetch_array($resultado)){
  139.             echo "<br/>";
  140.             echo "<br/>";
  141.             echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
  142.             echo "<br/>";
  143.             echo "----";
  144.             echo "<br/>";
  145.             echo "Comentario: ".$fila['comentario'];
  146.             echo "<br/>";
  147.             echo "---------------------------------------";
  148.             echo "<br/>";
  149.         }
  150.   }
  151. }
  152. else{
  153.     echo "Tienes que estar logeado para estar aqui";
  154. }
  155. ?>

Última edición por felire; 02/11/2011 a las 19:02
  #2 (permalink)  
Antiguo 02/11/2011, 21:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: problema al cambiar foto de perfil

Estas guardando correctamente el nombre de la foto, pero no la estas moviendo a la carpeta destino... para eso usa move_uploaded_file()
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 03/11/2011, 10:29
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 13 años, 3 meses
Puntos: 9
Respuesta: problema al cambiar foto de perfil

Cita:
Iniciado por Triby Ver Mensaje
Estas guardando correctamente el nombre de la foto, pero no la estas moviendo a la carpeta destino... para eso usa move_uploaded_file()
Si te fijas bien en la linea 88 si lo hago, ejecuto las dos cosas en el mismo if, la consulta a la base de datos y pongo && y pongo el move_uploaded_file
  #4 (permalink)  
Antiguo 03/11/2011, 12:53
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: problema al cambiar foto de perfil

Ah, ok, pero el problema que veo con ese if es que si se ejecuta la consulta y no se puede mover el archivo te va a quedar el registro con una foto que no esta disponible.

Ahora, porque te devuelve falso?... tanto la consulta como mover el archivo pueden ser causantes del "error", tambien por eso es mejor tener las dos cosas por separado:

- Antes que nada, revisa el valor que tienes en $_FILES['foto']['error'], si es diferente de cero no se subio el archivo correctamente
- Que pasa si algun usuario curioso o malintencionado sube un archivo .php a tu sitio?... seguro podra ejecutarlo, porque no verificas lo que estas recibiendo.
- Verifica que la ruta a donde moveras el archivo existe is_dir()
- Despues, si el archivo ya existe, de preferencia primero eliminalo unlink()
- Listo, ya puedes usar move_uploaded_file()
- Todavia tienes problemas para mover el archivo? asegurate de tener enctype="multipart/form-data" en tu etiqueta <form ...>
- Finalmente, cuando la consulta es la que falla, lo mejor es saber porque y no necesitas tenerla dentro de un if:
mysql_query("UPLOAD pruebas SET imagen = '$foto' WHERE (id = '$id')") or die('Error en la consulta: ' . mysql_error());
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 03/11/2011, 15:54
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 13 años, 3 meses
Puntos: 9
Respuesta: problema al cambiar foto de perfil

en el SQL me tira este error:

La consulta fallo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPLOAD pruebas SET imagen = 'DSC08199.JPG' WHERE (id = '5')' at line 1
  #6 (permalink)  
Antiguo 03/11/2011, 19:35
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 13 años, 3 meses
Puntos: 9
Respuesta: problema al cambiar foto de perfil

Disculpen mi estupidez, descubri mi error... Era la estupidez mas grande del mundo y te juro no se como me pyude equivocar en eso, en la consulta escribi UPLOAD en vez de UPDATE -.-

Etiquetas: condición, conexion, perfil
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:36.