[Php-avanzado] Problema con passwords

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Jue Sep 9 19:03:03 ART 2010


Hola Maia, 

	ya que estamos con este tema, fijate que tu algoritmo asume que no hay
dos usuarios que se llamen igual: valida si existe un usuario que
concuerde, pero si existe más de uno, también.

	Vamos a ver este tema cuando veamos sesiones y la capa de persistencia
que se le agrega al código para suplementar el "detalle" de que el
protocolo HTTP no la implementa.

	Nos vemos!

El jue, 09-09-2010 a las 14:34 -0300, Maia Cordero escribió:
> 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;


-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado