Foros del Web » Programando para Internet » PHP »

Problema con sha1

Estas en el tema de Problema con sha1 en el foro de PHP en Foros del Web. Hola, he consultado los post relacionados del foro y sigo sin encontrar el error: Intentando validar con sha1 Código PHP: $pass  =  $_POST [ 'pass' ...
  #1 (permalink)  
Antiguo 21/02/2012, 13:27
Avatar de ch3ssmaster  
Fecha de Ingreso: enero-2011
Mensajes: 97
Antigüedad: 13 años, 11 meses
Puntos: 5
Problema con sha1

Hola, he consultado los post relacionados del foro y sigo sin encontrar
el error:

Intentando validar con sha1

Código PHP:
$pass $_POST['pass'];

$consulta "SELECT password FROM admin"//solo hay una fila en la tabla
$validarPass = @mysql_query($consulta) or die("consulta erronea");

if (
sha1($pass) != $validarPass) {
      die(
"Datos_incorrectos");

Da el error: "Datos_incorrectos"

si pongo

Código PHP:
if (sha1($pass != '$el_pass_de_la_base_encriptado_directamente'
si autentica correctamente, por lo que supongo que la consulta está fallando. Podeis ayudarme??
__________________
Diseño Web profesional y creativo: WebSystem.
  #2 (permalink)  
Antiguo 21/02/2012, 13:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 7 meses
Puntos: 394
Respuesta: Problema con sha1

1. cuando el usuario se registra en tu sistema guardas la contraseña ENCRIPTADA ? o la guardas tal cual el usuario la escribió ?

2. $validarPass = @mysql_query($consulta) or die("consulta erronea") no creo que te guarde en ningun momento el campo que te trae de la BD deberias hacer un:

$rows = mysql_fetch_array($validarPass);

Si en la BD tienes almacenada la contraseña sin encriptar deberas hacer la comparacion asi:

if (sha1($pass) != sha1($validarPass))

Cosa que me parece perdida de tiempo porque debes guardar la contraseña encriptada en la base de datos...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 21/02/2012, 13:37
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Problema con sha1

En tu código validarPass obtiene el valor de la consulta, mas no el password consultado. para esto debería ser algo así:

Código PHP:
Ver original
  1. $pass = $_POST['pass'];
  2.  
  3. $consulta = "SELECT password FROM admin"; //solo hay una fila en la tabla
  4. $validarPass = @mysql_query($consulta) or die("consulta erronea");
  5. $validarPass=mysql_result($validarPass,0);//obtenemos el valor del campo password
  6. if (sha1($pass) != $validarPass) {
  7.       die("Datos_incorrectos");
  8. }
  #4 (permalink)  
Antiguo 21/02/2012, 13:47
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Problema con sha1

Como te dijo ocp001a debería funcionar. Te recomiendo que agregues mysql_error para que descartes posibles errores en la consulta y no un simple "consulta erronea".

Código PHP:
Ver original
  1. $validarPass = mysql_query($consulta) or die(mysql_error());

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 21/02/2012, 13:54
Avatar de zo0r  
Fecha de Ingreso: enero-2012
Ubicación: Miami, Florida.
Mensajes: 11
Antigüedad: 12 años, 11 meses
Puntos: 1
Información Respuesta: Problema con sha1

Buenas ch3ssmaster.

Tu problema radica en la línea:
Código PHP:
$validarPass = @mysql_query($consulta) or die("consulta erronea"); 
La función [URL="http://php.net/manual/en/function.mysql-query.php"]mysql_query()[/URL] devuelve un ID (Aka result) de la consulta para correspondientemente recuperar los datos de esa consulta ya sea de tipo Array Numérico/Asociativo o un Objecto (Like stdClass).

Las funciones serían:
[URL="http://www.php.net/manual/en/function.mysql-fetch-assoc.php"]mysql_fetch_assoc[/URL] (Recuperar como array asociativo)
[URL="http://www.php.net/manual/en/function.mysql-fetch-row.php"]mysql_fetch_row[/URL] (Recuperar como array numérico)
[URL="http://www.php.net/manual/en/function.mysql-fetch-object.php"]mysql_fetch_object[/URL] (Recuperar como un objeto)
[URL="http://www.php.net/manual/en/function.mysql-fetch-array.php"]mysql_fetch_array[/URL] (Recuperar como un array asociativo, numérico o ambos)

Un ejemplo con array asociativo (mysql_fetch_assoc()) sería:
Código PHP:
$pass $_POST['pass'];

$consulta "SELECT password FROM admin";

$validarPass = ( ($get = @mysql_query($consulta)) ? mysql_fetch_assoc($get) : die("consulta erronea") );

if ( 
sha1($pass) != $validarPass['password'] )
{
      die(
"Datos_incorrectos");

También mira tu consulta "SELECT password FROM admin", no creo que sean los rultados esperados que te devuelva o en todo caso limitalos a 1, también podrías asociarlo a una ID para hacer la consulta con mayor presición.

Un saludo.
  #6 (permalink)  
Antiguo 22/02/2012, 04:23
Avatar de ch3ssmaster  
Fecha de Ingreso: enero-2011
Mensajes: 97
Antigüedad: 13 años, 11 meses
Puntos: 5
Respuesta: Problema con sha1

Muchas gracias a todos por vuestra ayuda, he aprendido con vuestros aportes. Ya está solucionado. Parece que el libro que uso está desfasado (acabo de empezar php y mysql).

Cita:
Iniciado por jotaincubus Ver Mensaje
1. cuando el usuario se registra en tu sistema guardas la contraseña ENCRIPTADA ? o la guardas tal cual el usuario la escribió ?
las contraseñas las guardo encriptadas con mysql:

Código:
INSERT INTO 'miTabla' ()
VALUES ('user', sha1('password'));
Por cierto la encriptacion es con sha1 para este ensayo, la idea es con sha2 ya que mi proveedor tiene soporte. Hasta ahora es lo mas seguro que he encontrado pero ¿podeis aconsejarme algo mejor?
__________________
Diseño Web profesional y creativo: WebSystem.

Última edición por ch3ssmaster; 22/02/2012 a las 05:14

Etiquetas: mysql, sha1, tabla
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 01:31.