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<?php
// Recogemos el usuario en un Array($usuario)
$result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
?>
<h1>Ejemplo de Perfil</h1>
<b>Nick: </b><?php echo $usuario['usuario']; ?>
<br><br>
<a href="editar.php">Editar Mi Perfil</a>
editar.php
Código PHP:
Ver original<?php
// Recogemos el usuario en un Array($usuario)
$result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
?>
<h1>Editando Mi Perfil</h1>
<p>Mostramos los campos de formulario para que editen las cosas.</p>
<p>Fíjate especialmente en que nick y otros ya están rellenados mientras que la
contraseña por seguridad NO.</p>
<form action="guardar.php" method="post">
<b>Nick: </b>
<input type="text" name="nick" id="nick" value="<?php echo $usuario['usuario']; ?>">
<br>
<b>Contraseña: </b>
<input type="password" name="password" id="password" value="">
<br><br>
<input type="submit" value="Guardar datos">
</form>
<br />
<i>En una situación perfecta aquí debería haber dos campos de contraseña para que el usuario
la reescribiese para confirmarla.</i>
<br><br>
<a href="perfil.php">Cancelar</a>
guardar.php
Código PHP:
Ver original<?php
// Recogemos el usuario en un Array($usuario)
$result = mysql_query('SELECT * FROM usuarios WHERE usuario = "' . $_SESSION['k_username'] . '"')
// Ahora tenemos que recoger las variables que ha enviado el formulario
// Puedes hacerlo con el método que quieras. Yo por experiencia suelo usar
// este porque en caso de que haya fallos en el envio, protege de errores en el servidor
$nuevo_nick = empty($_POST['nick']) ?
'' : $_POST['nick'];
// Traducción: comprobamos si $_POST['nick'] está vacío, si lo está ponemos una cadena
// vacia para evitar errores, si no ponemos lo que nos hayan enviado.
$nueva_password = empty($_POST['password']) ?
'' : $_POST['password'];
echo 'Debes escribir un nick o dejar el que tenías.';
}
if($nuevo_nick != $usuario['usuario']) { // Si el nick ha cambiado....
mysql_query('UPDATE usuarios SET usuario = "' . $nuevo_nick . '" WHERE usuario = "' . $_SESSION['k_username'] . '"') echo 'El nick se ha guardado. No te olvides de actualizar $_SESSION para que ';
echo 'refleje los cambios y podamos seguir encontrando al usuario mediante su nick.<br>';
$_SESSION['k_username'] = $nuevo_nick;
}
if(!empty($nueva_password)) { // Si el usuario ha escrito alguna contraseña... mysql_query('UPDATE usuarios SET password = "' . $nueva_password . '" WHERE usuario = "' . $_SESSION['k_username'] . '"') echo 'La contraseña se ha guardado correctamente.<br>';
}
?>
<br><br>
<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.