[Php-avanzado] Problema con passwords
Maia Cordero
maiacordero en gmail.com
Jue Sep 9 14:34:50 ART 2010
ah me olvidaba para verificar hago esto:
Desde PHP
if ( isset( $_POST['txtUsuario'] ) && ( preg_match( '/^[a-zA-Z0-9]{4,12}$/',
$_POST['txtUsuario'] ) > 0 ) ) {
$usuario = trim( $_POST['txtUsuario'] );
} elseif ( isset( $_POST['txtUsuario'] ) ) {
$mensaje = 'El usuario debe tener enre 4 y 12 caracters';
}
if ( isset( $_POST['txtClave'] ) && ( preg_match(
'/^[a-zA-Z0-9]{4,12}$/', $_POST['txtUsuario'] ) > 0 ) ) {
$password = md5( $_POST['txtClave'] );
} elseif ( isset( $_POST['txtClave'] ) ) {
$mensaje = 'La clave debe tener entre 4 y 12 caracteres';
}
if ( $usuario != '' && $password != '' ) {
$datos_usuario = dbLogin( DSN_ADMIN, $usuario, $password );
// print_r( $datos_usuario );
if ( !is_array( $datos_usuario ) && $datos_usuario != '' )
$mensaje = $datos_usuario;
elseif ( $datos_usuario == '' )
$mensaje = 'USUARIO O CONTRASEÑA INCORRECTOS';
else {
$_SESSION['catalogo']['dsn'] = DSN_ADMIN;
$_SESSION['catalogo']['usuario'] = $datos_usuario; //id_usuario, nombre
header( 'location: abm_categorias.php' );
}
}
__________________
function dbLogin( $str_dsn, $str_usuario, $str_clave ) {
$cn =& MDB2::connect( $str_dsn );
if ( !PEAR::isError( $cn ) ) {
$consulta = 'call ' . DB_DATABASE . '.sp_login( ' . $cn->quote(
$str_usuario, 'text' ) . ', ' . $cn->quote( $str_clave, 'text' ) . ' );';
$res = $cn->query( $consulta );
if ( !PEAR::isError( $res ) )
$salida = $res->fetchRow( MDB2_FETCHMODE_ASSOC );
//$salida['id_user'] y $salida['nombre']
else
$salida = $res->getDebugInfo();
$cn->disconnect();
} else
$salida = $cn->getDebugInfo();
return $salida;
}
______________
Desde MYSQL
delimiter //
create procedure sp_login( IN usuario VARCHAR(12), IN clave CHAR(32) )
begin
select id_user, nombre
from TB_Usuarios
where login = usuario and pass = clave
limit 1;
end; //
delimiter ;
grant execute on procedure sp_login to cata_admin en localhost;
*Yo trabajo usando stores y perl. Pero perfectamente podes hacerlo
ejecuntando la query desde php con mysql_query*
El 9 de septiembre de 2010 14:30, Maia Cordero <maiacordero en gmail.com>escribió:
> Mmmm no se porque usaras una funcion de encriptación :S Yo uso MD5 a mi
> criterio es mas fácil de usar.
>
> Desde PHP hago esto:
>
> md5(trim($_POST['txtClave']))
>
> y en la BD tengo un campo de este tipo:
>
> clave char(32) not null
>
> No contesto tu pregunta pero quizás una solución alternativa no te viene
> mal ;)
>
> El 9 de septiembre de 2010 14:15, Juan Pablo <jbarreto_92 en hotmail.com>escribió:
>
>> Hola.
>> Les aclaro mi problema:
>>
>> Tengo un sistema de usuarios q encripta la contraseña con la función
>> crypt(string $str [, string $salt ] )
>>
>> Acá hice un script de prueba para probar todas las posibilidades.
>>
>> $password = crypt("ASDASDASD10","mardelmusic"); // let the salt be
>> automatically generated
>> $usuario="ASDASDASD100";
>>
>> if (crypt($usuario,"mardelmusic") == $password) {
>> echo "Password verified!:<br>$password <br>".crypt($usuario,$password);
>> }else{echo"Password falsa:<br>$password <br>".crypt($usuario,$password);}
>>
>>
>> Esto da verdadero. A pesar de que la contraseña q el usuario puso tenga un
>> cero demás. Y cuando imprime las contraseñas, ambas coinciden. O sea q
>> genera la misma contraseña con un 0 más... o varios (tambien probe con
>> muchos y pasa lo mismo)
>>
>> Entonces lo q decidí es sacarle la semilla.
>> En la prueba paso todo bien, pero cuando voy a mi script, falla, aunque
>> las pass coincidan:
>>
>> $pass_db=$data["usuario_pass"]; //De la base de datos, que el usuario
>> cargo cuando se registro. $usuario_pass=$_POST["pass"];
>>
>> f(crypt($usuario_pass,$pass_db) != $pass_db){
>> ERROR!
>> }else{
>> BIEN!
>> }
>>
>> Lo más comico de todo, es que en el error pongo imprimir ambas contraseñas
>> (base de datos y la encriptada del post) y son las dos iguales, pero son de
>> la siguiente estructura:
>>
>> $1$eM2.Pk3.$pDsUodej3nwxAkOVVQ0M21
>>
>> Entonces no se si el error lo ocasionan los $ $ o . . no se...
>>
>> Gracias y nos vemos el miercoles!
>>
>>
>> _______________________________________________
>> Php-avanzado mailing list
>> Php-avanzado en pato2.fi.mdp.edu.ar
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20100909/d4b8f4c4/attachment.htm
Más información sobre la lista de distribución Php-avanzado