[Php-avanzado] Problema con passwords
Maia Cordero
maiacordero en gmail.com
Vie Sep 10 09:20:19 ART 2010
Exacto Leo. Mi algoritmo asume que no hay dos usuario que se llamen igual
porque eso nunca puede suceder debido a la estructura de la tabla
CREATE TABLE TB_Usuarios(
id_user tinyint unsigned not null auto_increment,
login varchar(12) not null,
pass char(32) not null,
nombre varchar(50) not null,
PRIMARY KEY (id_user),
UNIQUE KEY usuario (login)
) ENGINE=InnoDB;
Al especificar UNIQUE KEY usuario el motor me asegura que nunca van a
existir dos nombres de usuarios que se llamen igual.
El 9 de septiembre de 2010 19:03, Leonardo Tadei - Pegasus Tech Supply <
leonardot en pegasusnet.com.ar> escribió:
> 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
>
> _______________________________________________
> 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/20100910/5a4df66b/attachment.htm
Más información sobre la lista de distribución Php-avanzado