[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