Muy bien Tomás, aquí está el código, no lo revisé y no estoy seguro de que funcione bien, pero creo que la idea queda clara y cualquier modificación requerida se la podrás hacer con facilidad.
Datos.php
Código:
<?php
/*
**JAR**
Con PHP, Obtiene los valores del usuario desde la Base de Datos y los muestra en una tabla
HTML con la opcion de sobreescribir el e-mail.
Con JavaScript, Valida que los campos Password contengan un valor y que los campos de
NuevoPassword 1 y 2 sean iguales.
*/
session_start();
require_once('conexion.php');
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0)
{
$sql = "Select * From usuarios Where codigo = ".intval($_SESSION["codigoUsuario"])." ";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result,MYSQL_ASSOC);
}
?>
<html>
<head>
<title>Page</title>
<script language="javascript" type="text/javascript">
validarForm()
{
var error;
error = 0; // No hay error
if ((document.all.Password.value == "") || (document.all.NuevoPassword1.value == "") ||(document.all.NuevoPassword2.value == ""))
{
error = 1; // Hay error y no mandamos el form
alert ("Debes escribir un valor en los passwords");
}
if ( document.all.NuevoPassword1.value != document.all.NuevoPassword2.value)
{
error = 1; // Error porque los nuevos passwords no son igual
alert ("Los valores del nuevo password deben de ser iguales");
}
if (error = 0)
{
document.all.form1.submit();
}
}
</script>
</head>
<body>
<form action="procesaformulario.php" method="post" name="form1" id="form1">
<table width="80%" border="1" align="center">
<tr>
<td>Nombre</td>
<td><?php echo $row["nombre"]." ".$row["apellido"]?></td>
</tr>
<tr>
<td>E-Mail</td>
<td><input name="email" type="text" value="<?php echo $row["email"]?>"></td>
</tr>
<tr>
<td>Password</td>
<td><input name="Password" type="password" value=""></td>
</tr>
<tr>
<td>Nuevo Password</td>
<td><input name="NuevoPassword1" type="password" value=""></td>
</tr>
<tr>
<td>Repetir Nuevo Password</td>
<td><input name="NuevoPassword2" type="password" value=""></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="btnSubmit" type="button" value="Aceptar" onClick="validarForm();">
</div></td>
</tr>
</table>
</form>
</body>
</html>
Y es procesado por
ProcesaFormulario.php
Código:
<?php
session_start();
require_once('conexion.php');
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0)
{
$pass = md5($_POST["Password"]); // Almaceno el MD5 de Password porque así está almacenado en la tabla
$npass = md5($_POST["NuevoPassword1"]); // Solo trabajamos con NuevoPassword1. NuevoPassword2 fué solo para verificar que el usuario no cometía errores tipográficos.
// Verificamos que el usuario sea quien dice ser.
$sql = "Select password From usuarios Where codigo = ".intval($_SESSION['codigoUsuario'])." ";
$res = mysql_query($sql);
$row = mysql_fetch_array($res,MYSQL_ASSOC);
if ($row["password"] == $pass) // Verificamos que los passwords coincidan
{
$sql = "Update usuarios Set mail = '".$_POST["email"]."', password = '".$npass."' Where codigo = ".intval($_SESSION["codigoUsuario"])." and password = '".$pass."' ";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_affected_rows() == 1)
{
echo "Datos Actualizados";
}
else
{
echo "Ocurrió algún problema";
}
}
else
{
echo "El Password no coincide.";
}
}
?>
Ojalá sirva de algo.