Foros del Web » Programando para Internet » PHP »

Pequeño problemilla.

Estas en el tema de Pequeño problemilla. en el foro de PHP en Foros del Web. Buenas Noches. Veran tengo el siguiente problemilla con una sentencia hacia mysql. Resulta que inserte unos datos de la siguiente manera a mano en la ...
  #1 (permalink)  
Antiguo 30/11/2003, 14:47
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Pequeño problemilla.

Buenas Noches.

Veran tengo el siguiente problemilla con una sentencia hacia mysql. Resulta que inserte unos datos de la siguiente manera a mano en la BD de mysql:

insert into tabla(nick, clave) values('carlos', ENCRYPT('carlos'));

Y al hacer el select, si hago este no me rula:
select * from tabla where nick='carlos' and clave=PASSWORD('carlos');

Sin embargo asi si:
select * from tabla where nick='carlos';


¿Alguien sabe que estoy hacinedo mal con las funciones ENCRYPT y PASSWORD?, yo creia que ese era el uso, ¿o no?.

Uso el Servidor 3. y el 4.0

Bueno, espero que puedan ayudarme, y desde ya, gracias.
__________________
Charlie.
  #2 (permalink)  
Antiguo 30/11/2003, 15:08
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
yo usaria MD5, es mejor.
Código PHP:
<?php
//un pass cualquiera
$pass "123456";

//paso el pass a MD5 encriptacion!
$pass MD5($pass);

echo 
$pass;//te muestro el pass para que lo veas

//este hueco vacio en el insert '', es pq uso un ID autoincrement, con lo cual lo hace mysql automaticamente!
//NOW() => significa fecha en mysql, es lo mismo que en php => date("Y-d-m H:m:s");
//para insertar
mysql_query("INSERT INTO $sql_tabla values('','$nick','$pass',NOW())") or die("MySQL dice: ".mysql_error());

//para consultar
$consul mysql_query("SELECT * FROM $sql_tabla WHERE pass='$pass'") or die("MySQL dice: ".mysql_error());

?>
byeee
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 30/11/2003, 15:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

ENCRYPT() y PASSWORD() usasn distintos algoritmos para encriptar las cadenas. Asi que no las puedes mezclar. O usas una o usas la otra. Asi que tu select deberira ser:

select * from tabla where nick='carlos' and clave=ENCRYPT('carlos');

si es que usas el ENCRYPT en el insert.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 30/11/2003, 15:13
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Gracias, probare eso que me has comentado por curiosidad, pero aun asi sigo teniendo la duda de por que narices no funciona como yo lo he hecho.

¿Acaso no se usa PASSWORD() para comprobar los datos insertardos previamente con ENCRYPT?
__________________
Charlie.
  #5 (permalink)  
Antiguo 30/11/2003, 15:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
No. Ejemplo estupido: ENCRYPT traduce la palabra al ruso, mientras que PASSWORD lo hace al aleman. Por lo que para comparar algo encriptado con ENCRYPT debes usar ENCRYPT(), y para algo con PASSWORD, debes usar PASSWORD(). Usan algoritmos distintos y generan encriptaciones distintas e incompatibles.

Saludos.

PD: Lo mismo que si usas MD5(), debes comprarlo con MD5().
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 30/11/2003, 15:47
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Muchas Gracias, ya lo entiendo. :D
__________________
Charlie.
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 11:04.