Foros del Web » Programando para Internet » PHP »

Problema: cambio de password en php con seguridad hash

Estas en el tema de Problema: cambio de password en php con seguridad hash en el foro de PHP en Foros del Web. Estoy trabajando en un sistema de registro y logueo de usuarios con seguridad “HASH” que funciona bien y sin problemas gracias a la ayuda de ...
  #1 (permalink)  
Antiguo 14/07/2011, 08:51
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 1
Problema: cambio de password en php con seguridad hash

Estoy trabajando en un sistema de registro y logueo de usuarios con seguridad “HASH” que funciona bien y sin problemas gracias a la ayuda de muchos en este foro.

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%%';
    
$passsha1($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 || $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(
$fmysql_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">&nbsp;</td>
           </tr>
             <tr>
               <td>Clave actual:</td>
               <td><input type="password" name="pass" size="20" maxlength="50" /></td>
               <td>&nbsp;</td>
             </tr>
             <tr>
               <td>Nueva clave:</td>
               <td><input type="password" name="nueva" size="20" maxlength="50" /></td>
               <td>&nbsp;</td>
             </tr>
             <tr>
               <td>Confirmar nueva clave:</td>
               <td><input type="password" name="nueva2" size="20" maxlength="50" /></td>
               <td>&nbsp;</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> 
...:::Este es el que me da problemas:::...
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
  #2 (permalink)  
Antiguo 14/07/2011, 09:10
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Problema: cambio de password en php con seguridad hash

te recomiendo que si sabes la pagina donde esta el problema no pongas el resto.
ahora bien, mostranos cual es el error!!!!
en cambiar clave 2
  #3 (permalink)  
Antiguo 14/07/2011, 09:14
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema: cambio de password en php con seguridad hash

Tenes grande errores de seguridad :S

if($usuario==NULL|$a==NULL|$b1==NULL|$b2==NULL) {

?

existe | ? yo conozco || y &&

&& Y (7>2) && (2<4) Devuelve verdadero cuando ambas condiciones son verdaderas.

and Y (7>2) and (2<4) Devuelve verdadero cuando ambas condiciones son verdaderas.

|| O (7>2) || (2<4) Devuelve verdadero cuando al menos una de las dos es verdadera.

or O (7>2) or (2<4) Devuelve verdadero cuando al menos una de las dos es verdadera.

! No ! (7>2) Niega el valor de la expresión.
  #4 (permalink)  
Antiguo 14/07/2011, 10:10
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Problema: cambio de password en php con seguridad hash

Cita:
Iniciado por Patriarka Ver Mensaje
te recomiendo que si sabes la pagina donde esta el problema no pongas el resto.
ahora bien, mostranos cual es el error!!!!
en cambiar clave 2
enrealidad ni yo se cual es el error, pero lo que si se es que en el formulario coloco el usuario - clave actual - clave nueva - repetir clave nueva y al precionar el boton cambiar salta a cambiar_clave2.php pero no aparece nada en pantalla ( en blanco) por eso pido por favor si me ayudan a entender y corregir el problema

gracias

Última edición por gonzaloaedo; 14/07/2011 a las 10:18
  #5 (permalink)  
Antiguo 14/07/2011, 11:11
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Problema: cambio de password en php con seguridad hash

ok, en cambiar_clave2.php
hace
var_dump($_REQUEST);
  #6 (permalink)  
Antiguo 15/07/2011, 02:48
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Problema: cambio de password en php con seguridad hash

Y pon también el or die("Error: ".mysql_error()) en la línea:
$con = mysql_query("SELECT * FROM usuarios WHERE username='$sesion'");
  #7 (permalink)  
Antiguo 15/07/2011, 08:38
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Problema: cambio de password en php con seguridad hash

Cita:
Iniciado por Patriarka Ver Mensaje
ok, en cambiar_clave2.php
hace
var_dump($_REQUEST);
ok, pero en que linea coloco esto y por que? razon, quiero entender un poco mas.

gracias
  #8 (permalink)  
Antiguo 15/07/2011, 10:40
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años, 7 meses
Puntos: 23
Respuesta: Problema: cambio de password en php con seguridad hash

Buenas!!

Gonzaloaedo: tu ultimo comentario en lo personal me agrado porque asi se ve que quieres aprender y no solo copiar y pegar sin realmente aprender...

mi comentario en general seria en el sentido que tambien pongas un poco mas de tu parte... aqui eh aprendido muchisimo y muchos como el compañero patriarka solo te ponen lo que debes usar sin mayor explicacion...

cuando sea este el caso si ya tienes la base que es la respuesta investigalo un poco ya sea en "San google" o mejor aun directo en el manual oficial de php, www.php.net
ahi por lo general encontraras todo bastante claro, si aun asi te queda duda, entonces comentarlo de nuevo y asi ten por seguro que vas a ser con el tiempo uno de los mas expertos de php como los hay por aqui....

saludos!!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #9 (permalink)  
Antiguo 15/07/2011, 10:41
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Problema: cambio de password en php con seguridad hash

con esto vemos que valores llegaron por el formulario a esta pagina,
asi entramos en contexto y es mas facil ayudarte, no descofies
y tenes php.net para verificar que hace la funcion que no conozcas
  #10 (permalink)  
Antiguo 18/07/2011, 10:10
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Problema: cambio de password en php con seguridad hash

Cita:
Iniciado por HalconVigia Ver Mensaje
Buenas!!

Gonzaloaedo: tu ultimo comentario en lo personal me agrado porque asi se ve que quieres aprender y no solo copiar y pegar sin realmente aprender...

mi comentario en general seria en el sentido que tambien pongas un poco mas de tu parte... aqui eh aprendido muchisimo y muchos como el compañero patriarka solo te ponen lo que debes usar sin mayor explicacion...

cuando sea este el caso si ya tienes la base que es la respuesta investigalo un poco ya sea en "San google" o mejor aun directo en el manual oficial de php, [url]www.php.net[/url]
ahi por lo general encontraras todo bastante claro, si aun asi te queda duda, entonces comentarlo de nuevo y asi ten por seguro que vas a ser con el tiempo uno de los mas expertos de php como los hay por aqui....

saludos!!

la verdad es que en [url]www.php.net[/url] las explicaciones son muy técnicas y algunos conceptos no los manejo, claro está por qué no soy programador ni e estudiado programación, he tratado de entender apoyarme con san google pero los resultados son muy técnicos necesito algo que pueda entender mejor
pero si no se puede conseguir algo asi por estos lados mejor "me doy" como dise kiko

Etiquetas: contraseña, hash, password, seguridad, cambios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:28.