Ver Mensaje Individual
  #20 (permalink)  
Antiguo 07/09/2010, 19:25
Avatar de perryjr
perryjr
 
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 27
Respuesta: como crear un perfil de usuario?

Vale, ya los tengo. Son muy básicos y podrían mejorarse en muchos sentidos, pero te servirán para que puedas aprender a hacerlo. Me copie tus archivos y simule el mismo entorno que tienes tu. A mi me funcionaban sin problemas.

perfil.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. ?>
  13.  
  14. <h1>Ejemplo de Perfil</h1>
  15.  
  16. <b>Nick: </b><?php echo $usuario['usuario']; ?>
  17.  
  18. <br><br>
  19.  
  20. <a href="editar.php">Editar Mi Perfil</a>

editar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. ?>
  13.  
  14. <h1>Editando Mi Perfil</h1>
  15.  
  16. <p>Mostramos los campos de formulario para que editen las cosas.</p>
  17. <p>Fíjate especialmente en que nick y otros ya están rellenados mientras que la
  18.   contraseña por seguridad NO.</p>
  19.  
  20. <form action="guardar.php" method="post">
  21.   <b>Nick: </b>
  22.   <input type="text" name="nick" id="nick" value="<?php echo $usuario['usuario']; ?>">
  23.  
  24.   <br>
  25.  
  26.   <b>Contraseña: </b>
  27.   <input type="password" name="password" id="password" value="">
  28.  
  29.   <br><br>
  30.   <input type="submit" value="Guardar datos">
  31. </form>
  32.  
  33. <br />
  34. <i>En una situación perfecta aquí debería haber dos campos de contraseña para que el usuario
  35.   la reescribiese para confirmarla.</i>
  36.  
  37. <br><br>
  38.  
  39. <a href="perfil.php">Cancelar</a>

guardar.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. mysql_connect('localhost','root');
  5. mysql_select_db('casuringa');
  6.  
  7. // Recogemos el usuario en un Array($usuario)
  8. $result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
  9.   or die(mysql_error());
  10. $usuario = mysql_fetch_array($result);
  11.  
  12. // Ahora tenemos que recoger las variables que ha enviado el formulario
  13. // Puedes hacerlo con el método que quieras. Yo por experiencia suelo usar
  14. // este porque en caso de que haya fallos en el envio, protege de errores en el servidor
  15.  
  16. $nuevo_nick = empty($_POST['nick']) ? '' : $_POST['nick'];
  17.  
  18. // Traducción: comprobamos si $_POST['nick'] está vacío, si lo está ponemos una cadena
  19. // vacia para evitar errores, si no ponemos lo que nos hayan enviado.
  20.  
  21. $nueva_password = empty($_POST['password']) ? '' : $_POST['password'];
  22.  
  23. if(empty($nuevo_nick)) {
  24.   echo 'Debes escribir un nick o dejar el que tenías.';
  25.   die();
  26. }
  27.  
  28. if($nuevo_nick != $usuario['usuario']) { // Si el nick ha cambiado....
  29.   mysql_query('UPDATE usuarios SET usuario = "' . $nuevo_nick . '" WHERE usuario = "' . $_SESSION['k_username'] . '"')
  30.     or die(mysql_error());
  31.   echo 'El nick se ha guardado. No te olvides de actualizar $_SESSION para que ';
  32.   echo 'refleje los cambios y podamos seguir encontrando al usuario mediante su nick.<br>';
  33.   $_SESSION['k_username'] = $nuevo_nick;
  34. }
  35.  
  36. if(!empty($nueva_password)) { // Si el usuario ha escrito alguna contraseña...
  37.   mysql_query('UPDATE usuarios SET password = "' . $nueva_password . '" WHERE usuario = "' . $_SESSION['k_username'] . '"')
  38.     or die(mysql_error());
  39.   echo 'La contraseña se ha guardado correctamente.<br>';
  40. }
  41.  
  42. ?>
  43. <br><br>
  44. <a href="perfil.php">Volver a Mi Perfil</a>


Uno de los grandes cambios que deberías hacerle es como ya te dije el md5();
- Registro: en vez de grabar la contraseña graba el md5.
- validar_usuario: en vex de $f["password"] == $password pon $f["password"] == md5($password)
- en guardar.php: SET password = "' . $nueva_password . '" WHERE usuario lo sustituyes por
SET password = "' . md5($nueva_password) . '" WHERE usuario

Con eso tus contraseñas estarán protegidas a la hora de guardarlas.

Si tienes alguna duda más sobre la implementación o te da error no dudes en preguntar.