Foros del Web » Programando para Internet » PHP »

encriptacion para login

Estas en el tema de encriptacion para login en el foro de PHP en Foros del Web. Hola, tengo las contraseñas encriptadas con md5 en la base de datos, el problema lo tengo en que cuando quiero hacer el login no me ...
  #1 (permalink)  
Antiguo 17/10/2011, 10:16
 
Fecha de Ingreso: septiembre-2011
Mensajes: 30
Antigüedad: 12 años, 7 meses
Puntos: 1
encriptacion para login

Hola,

tengo las contraseñas encriptadas con md5 en la base de datos, el problema lo tengo en que cuando quiero hacer el login no me hace la descodificacion, no se como lo tengo que hacer ya que para codificar hago :
Código:
$password = md5($_POST['password']);
para descodificar para poder interpretar al contraseña no existe una funcion similar, o como se hace?

Gracias!
  #2 (permalink)  
Antiguo 17/10/2011, 10:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: encriptacion para login

MD5 es un HASH o algoritmo no reversible que genera un código Único para un contenido en particular, así que no se puede decodificar.

lo que tienes que hacer al momento del login es hashear de nuevo la contraseña y comparar los hashes:

$password_login = MD5($_POST['password']);

if ($pasword_login == $pasword_db) //se asume de la DB
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 17/10/2011, 10:20
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: encriptacion para login

No.. la idea es comparar la contraseña que te viene por post, con la que tienes guardad en la base de datos. De esa manera, sabrás si son iguales y no podrás ver que contiene la contraseña original.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #4 (permalink)  
Antiguo 17/10/2011, 10:53
 
Fecha de Ingreso: septiembre-2011
Mensajes: 30
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: encriptacion para login

Ok! lo entiendo pero viendo mi codigo...

Código PHP:
Ver original
  1. <?
  2. if ($_POST['username']) {
  3. $username=$_POST['username'];
  4. $password_login = md5($_POST['password']);
  5.  
  6. //if ($pasword_login == $pasword_db) //se asume de la DB
  7.  
  8. //$password = md5($_POST[$password]);
  9.  
  10. if ($password_login==NULL) {
  11.     echo "<center>El password no se ha enviado<center>";
  12.         }else{
  13.             $query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
  14.             $data = mysql_fetch_array($query);
  15.         if($data['password'] != $password_login) {
  16.             echo "<center>Login incorrecto<center>";
  17.         }else{
  18.             $query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
  19.             $row = mysql_fetch_array($query);
  20.             $_SESSION["s_username"] = $row['username'];
  21.     header("Location: index.php");
  22. }
  23. }
  24. }
  25. $_SESSION['userid'] = null;
  26. ?>

Eso no tendria que funcionar? Siempre me dice login incorrecto!

Muchas gracias por responder tan rapido!
  #5 (permalink)  
Antiguo 17/10/2011, 11:24
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: encriptacion para login

revisa la lógica de tu código:


if ($password_login==NULL) {

¿como esperas que entre al bloque si el password NO es nullo?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 17/10/2011, 11:31
 
Fecha de Ingreso: septiembre-2011
Mensajes: 30
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: encriptacion para login

Entidendo que si el

if ($password_login==NULL)

significa que no he escrito en el edit, y si no es nulo de eso se encarga el "else" no?
  #7 (permalink)  
Antiguo 17/10/2011, 11:36
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: encriptacion para login

Yo creo que tu código no esta muy bien hecho, quizás deberías reescribirlo...
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #8 (permalink)  
Antiguo 17/10/2011, 11:38
 
Fecha de Ingreso: septiembre-2011
Mensajes: 30
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: encriptacion para login

Alguna idea entonces? soy nuevo en esto y voy muy perdido! si el codigo esta mal hecho es porque no se mas!jejeje

Gracias de toda formas!
  #9 (permalink)  
Antiguo 17/10/2011, 11:46
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: encriptacion para login

Código PHP:

function limpia_data($data) {
//limpio con las funciones necesarias    
return $data;
}

//comprobar datos de usuario

function user_exists($username ""$password "") {

$out FALSE;

if(
$username and $password) {

$sql 'SELECT COUNT(user_id) AS count FROM users WHERE username = \'' $username '\' AND password = \'' $password '\'';

//recojo el resultado de la consulta...

if($row['count'] == 1) {
$out TRUE;


return 
$out;

}


}
if(isset(
$_POST['submit'])) {

$username limpia_data($_POST['username']);
$password limpia_data($_POST['password']);

if(
user_exists($username$password)) {
//mi codigo
} else {
//no existe
}



He hecho esto rápido de memoria, creo que puedes pillar la idea, no es un ejemplo final ni mucho menos, pero te puede servir para mejorar lo que tienes.

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #10 (permalink)  
Antiguo 17/10/2011, 11:56
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: encriptacion para login

Se me ha ido la olla,

Dentro de :

Código PHP:
Ver original
  1. $username = limpia_data($_POST['username']);
  2. $password = limpia_data($_POST['password']);

sería

Código PHP:
Ver original
  1. $username = limpia_data($_POST['username']);
  2. $password = limpia_data($_POST['password']);
  3. $password = md5($password);
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #11 (permalink)  
Antiguo 18/10/2011, 01:50
 
Fecha de Ingreso: septiembre-2011
Mensajes: 30
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: encriptacion para login

ok!! muchisimas gracias a todos por su ayuda!

Etiquetas: encriptacion, login
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




La zona horaria es GMT -6. Ahora son las 04:25.