Bueno ahora se me ocurrió agregar un formulario para cambiar el pasword de usuario y encontré por ahí un formulario que esta arto manoseado y que no funciona muy bien y me gustaría que me ayudaran a entender y a resolver por favor.
Aquí el formulario completo
este es para registrar el usuario funciona bien :)
registrar.php
Código PHP:
<?php
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST['username']) && isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$cadena = '478@€shdk%%';
$pass= sha1($password); // Encriptas la contraseña
// Hay campos en blanco
if($username == NULL || $password == NULL || $password2 == NULL || $nombre == NULL || $apellido == NULL || $email == NULL) {
echo 'Un campo está vacio.';
mostrar();
} else {
// ¿Coinciden las contraseñas?
if($password != $password2) {
echo 'Las contraseñas no coinciden';
mostrar();
} else {
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);
if ($email_exist > 0 || $username_exist > 0) {
echo 'El nombre de usuario o la cuenta de correo estan ya en uso';
mostrar();
} else {
$query = 'INSERT INTO usuarios (usuario, password, nombre, apellido, email, fecha)
VALUES (\''.$username.'\',\''.$pass.'\',\''.$nombre.'\',\''.$apellido.'\',\''.$email.'\',\''.date("d-m-Y").'\')';
mysql_query($query) or die ('Ha fallado la entrada de datos'); // Si falla nos avisa.
echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
echo 'Ahora puede entrar ingresando su usuario y su password <br />';
mostrar1();
?>
<?php
}
}
}
} else {
mostrar();
}
?>
este me dice si estoy logueado correctamente o si no existe el usuario en la BD y toda esa pajamama
validar_usuario.php (funciona bien)
Código PHP:
<?php
session_start();
?>
<?php
mysql_connect('xxxxxxxx','xxxxxxxx','xxxxxxxx');
mysql_select_db("xxxxxxxx");
$usuario = strtolower($_POST["usuario"]);
$password = $_POST["password"];
if($usuario!= "" && $password!= "")
{
$sql = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario="'.$usuario.'"');
if($f= mysql_fetch_array($sql)){
$passwordDB = $f['password'];
if(sha1($password) == $passwordDB) {
$_SESSION["k_username"] = $f['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="xxxxxxxx.php">Entrar a Manuales</a></p>';
}else{
echo 'Contraseña incorrecta';
echo '<a href="../index.php">Inicio</a></p>';
}
}else{
echo 'Usuario no existente en la base de datos ';
echo '<a href="../index.php">Inicio</a></p>';
}
}
?>
...:::AHORA AKI EL FORMULARIO PARA CAMBIAR PASSWORD:::...
...:::Este es el que me da problemas:::...
cambiar_clave.html
Código HTML:
<td width="241" height="132"></p> <form action="cambiar_clave2.php" method="post"> <table width="334"> <tr> <td width="155">Usuario: </td> <td width="120"><input type="text" name="usuario" size="20" maxlength="20" /></td> <td width="37"> </td> </tr> <tr> <td>Clave actual:</td> <td><input type="password" name="pass" size="20" maxlength="50" /></td> <td> </td> </tr> <tr> <td>Nueva clave:</td> <td><input type="password" name="nueva" size="20" maxlength="50" /></td> <td> </td> </tr> <tr> <td>Confirmar nueva clave:</td> <td><input type="password" name="nueva2" size="20" maxlength="50" /></td> <td> </td> </tr> <tr> <td height="26"><input type="submit" class="boton" value="Modificar clave" name="modificar" /></td> <td><input type="reset" class="boton" value="Borrar campos" /></td> <td><a href="../index.php">Inicio</a></td> </tr> </table> </form></td> </tr>
cambiar_clave2.php
Código PHP:
<?php
session_start();
?>
<?php
mysql_connect('xxxxxxxx','xxxxxxxx','xxxxxxxx');
mysql_select_db("xxxxxxxx");
$sesion = $_SESSION['s_username'];
if (isset($_POST['modificar'])) {
$usuario = $_POST['usuario'];
$a = $_POST['pass'];
$b1 = $_POST['nueva'];
$b2 = $_POST['nueva2'];
if($usuario==NULL|$a==NULL|$b1==NULL|$b2==NULL) {
echo "Un campo está vacio. Vuelva a intentarlo <a href=cambiar_clave.php>clic aquí</a>";
}else{
$con = mysql_query("SELECT * FROM usuarios WHERE username='$sesion'");
if (mysql_num_rows($con) > 0) {
$mostrar = mysql_fetch_assoc($con);
$actual = $mostrar['password'];
if($actual!=$a) {
echo "\"Clave actual\" debe ser la clave que usas actualmente para iniciar sesion. Si no conoces esa clave, aconsejo ir a \"olvide mi clave\". <a href=cambiar_clave.php>Volver a intentarlo</a>";
}else{
if($b1!=$b2) {
echo "Las contraseñas no coinciden. <a href=cambiar_clave.php>Volver a intentarlo</a>";
}else{
$sql = "UPDATE usuarios set password='$b1' WHERE username = '$sesion'";
$res = mysql_query($sql) or die("Error: ".mysql_error());
echo "Tu clave ha sido modificada correctamente. Esta es tu nueva clave: <b>".$b1."</b>.<br>Tu cuenta se cerró y tendras que volver a abrirla. <a href=index.php>Volver a la pagina princial</a>";
$_SESSION = array();
}
}
}
}
}else{
echo 'Tu no estas autentificado. No puedes entrar aqui!!<br><br><a href="index.php">Volver</a>';
}
?>
agradecere mucho sus comentarios