Hola!!! También me gustaría preguntar otra cosa de estos códigos. En el código para que el usuario cambie él mismo su contraseña, ocurre algo raro, ya que me envía el mensaje de "Contraseña cambiada correctamente.", pero, lo cierto, es que nada cambia en la base de datos. Es más, cuando vuelvo a logear al usuario, he de utilizar la contraseña antigua, ya que la nueva no se ha registrado. Me imagino que el problema está en que los password se insertan en la bd encriptados a través de md5, pero no estoy segura de cómo solucionarlo. Por último destacar que los datos se ingresan en la tabla "usuarios" y en el campo "contrasenna", por si influye en algo.
Código PHP:
<?php include("conexion.php"); $link = Conectarse (); // incluímos los datos de conexión a la BD
session_start();
?>
<?php
if(isset($_SESSION['USUARIO'])) { // comprobamos que la sesión esté iniciada
//realizamos la comprobacion de los datos
if(isset($_POST['enviar'])) {
if($_POST['clave'] != $_POST['repcontrasenna']) {
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$usuario = $_SESSION['usuario'];
$clave = mysql_real_escape_string($_POST["clave"]);
$contrasenna = md5($clave); // encriptamos la nueva contraseña con md5
$sql = mysql_query("UPDATE usuarios SET contrasenna='".$contrasenna."' WHERE usuario='".$usuario."'")or die(mysql_error());
if($sql) {
echo "Contraseña cambiada correctamente.";
}else {
echo "Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>";
}
}
}else {
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Nueva contraseña:</label><br />
<input type="password" name="clave" maxlength="15" /><br />
<label>Confirmar:</label><br />
<input type="password" name="repcontrasenna" maxlength="15" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
}else {
echo "Acceso denegado.";
}
?>