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<div><br></div><div><div>CREATE TABLE TB_Usuarios(</div><div> id_user tinyint unsigned not null auto_increment,</div>
<div> login varchar(12) not null,</div><div> pass char(32) not null,</div><div> nombre varchar(50) not null,</div><div> PRIMARY KEY (id_user),</div><div> UNIQUE KEY usuario (login)</div><div>) ENGINE=InnoDB;</div>
<div><br></div><div>Al especificar UNIQUE KEY usuario el motor me asegura que nunca van a existir dos nombres de usuarios que se llamen igual.</div><br><div class="gmail_quote">El 9 de septiembre de 2010 19:03, Leonardo Tadei - Pegasus Tech Supply <span dir="ltr"><<a href="mailto:leonardot@pegasusnet.com.ar">leonardot@pegasusnet.com.ar</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hola Maia,<br>
<br>
ya que estamos con este tema, fijate que tu algoritmo asume que no hay<br>
dos usuarios que se llamen igual: valida si existe un usuario que<br>
concuerde, pero si existe más de uno, también.<br>
<br>
Vamos a ver este tema cuando veamos sesiones y la capa de persistencia<br>
que se le agrega al código para suplementar el "detalle" de que el<br>
protocolo HTTP no la implementa.<br>
<br>
Nos vemos!<br>
<br>
El jue, 09-09-2010 a las 14:34 -0300, Maia Cordero escribió:<br>
<div><div></div><div class="h5">> ah me olvidaba para verificar hago esto:<br>
><br>
><br>
> Desde PHP<br>
><br>
><br>
> if ( isset( $_POST['txtUsuario'] ) &&<br>
> ( preg_match( '/^[a-zA-Z0-9]{4,12}$/', $_POST['txtUsuario'] ) > 0 ) )<br>
> {<br>
> $usuario = trim( $_POST['txtUsuario'] );<br>
> } elseif ( isset( $_POST['txtUsuario'] ) ) {<br>
> $mensaje = 'El usuario debe tener enre 4 y 12 caracters';<br>
> }<br>
><br>
> if ( isset( $_POST['txtClave'] ) &&<br>
> ( preg_match( '/^[a-zA-Z0-9]{4,12}$/', $_POST['txtUsuario'] ) > 0 ) )<br>
> {<br>
> $password = md5( $_POST['txtClave'] );<br>
> } elseif ( isset( $_POST['txtClave'] ) ) {<br>
> $mensaje = 'La clave debe tener entre 4 y 12 caracteres';<br>
> }<br>
><br>
> if ( $usuario != '' && $password != '' ) {<br>
> $datos_usuario = dbLogin( DSN_ADMIN, $usuario, $password );<br>
><br>
> // print_r( $datos_usuario );<br>
><br>
> if ( !is_array( $datos_usuario ) && $datos_usuario != '' )<br>
> $mensaje = $datos_usuario;<br>
> elseif ( $datos_usuario == '' )<br>
> $mensaje = 'USUARIO O CONTRASE&Ntilde;A INCORRECTOS';<br>
> else {<br>
> $_SESSION['catalogo']['dsn'] = DSN_ADMIN;<br>
> $_SESSION['catalogo']['usuario'] = $datos_usuario; //id_usuario,<br>
> nombre<br>
> header( 'location: abm_categorias.php' );<br>
> }<br>
> }<br>
><br>
><br>
> __________________<br>
><br>
><br>
> function dbLogin( $str_dsn, $str_usuario, $str_clave ) {<br>
> $cn =& MDB2::connect( $str_dsn );<br>
> if ( !PEAR::isError( $cn ) ) {<br>
> $consulta = 'call ' . DB_DATABASE . '.sp_login( ' .<br>
> $cn->quote( $str_usuario, 'text' ) . ', ' . $cn->quote( $str_clave,<br>
> 'text' ) . ' );';<br>
> $res = $cn->query( $consulta );<br>
> if ( !PEAR::isError( $res ) )<br>
> $salida = $res->fetchRow( MDB2_FETCHMODE_ASSOC );<br>
> //$salida['id_user'] y $salida['nombre']<br>
> else<br>
> $salida = $res->getDebugInfo();<br>
> $cn->disconnect();<br>
> } else<br>
> $salida = $cn->getDebugInfo();<br>
><br>
> return $salida;<br>
> }<br>
><br>
><br>
> ______________<br>
><br>
><br>
> Desde MYSQL<br>
><br>
><br>
> delimiter //<br>
> create procedure sp_login( IN usuario VARCHAR(12), IN clave CHAR(32) )<br>
> begin<br>
> select id_user, nombre<br>
> from TB_Usuarios<br>
> where login = usuario and pass = clave<br>
> limit 1;<br>
> end; //<br>
> delimiter ;<br>
> grant execute on procedure sp_login to cata_admin@localhost;<br>
<br>
<br>
</div></div><div class="im">--<br>
<br>
Leonardo Tadei<br>
<a href="mailto:leonardot@pegasusnet.com.ar">leonardot@pegasusnet.com.ar</a><br>
<a href="http://blog.pegasusnet.com.ar" target="_blank">http://blog.pegasusnet.com.ar</a><br>
Firma pública: <a href="http://www.pegasusnet.com.ar/LeonardoTadei-public.key" target="_blank">http://www.pegasusnet.com.ar/LeonardoTadei-public.key</a><br>
<br>
_______________________________________________<br>
</div><div><div></div><div class="h5">Php-avanzado mailing list<br>
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar">Php-avanzado@pato2.fi.mdp.edu.ar</a><br>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a><br>
</div></div></blockquote></div><br></div>