![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Hola gente: A ver si me pueden echar una mano, el tema me tiene bastante desconcertado. El módulo que está más abajo es para controlar el acceso a una página, pide nombre de usuario y clave y la compara con los datos almacenado en la tabla de usuarios. Mi intención es que después de 3 intentos, se le muestre una pantalla de error, y al quedar la variable de sesión "nIntentos" mayor a 3, que no le permita más intentar acceder, por lo menos hasta que cierre y vuelva a abrir el navegador. El asunto es que en la "Parte 1" la variable de sesión "nIntentos" *siempre* vale 0, es decir, no toma el incremento de la "Parte 2". A lo mejor sea una pavada, pero la verdad a esta altura ya no se que más probar. Todas las demás variables de sesión definidas en este módulo las reconoce perfectamente en los demás módulos del sistema. Les agradeceré cualquier pista... y si están cerca las cervezas corren por mi cuenta ;-) Saludos, Walter .-----. / \ _ / \ __ (\/ / \ |_/oo) \--------------~ // || || \\ http://www.swcomputacion.com/ Usuario Linux 425808 http://counter.li.org/ .... aquí va el módulo <?session_start(); if( !isset($_SESSION['nIntentos'])) { $_SESSION['nIntentos']=1; } // // validaUser.php // // verifica si hay una session['idUsuario'] vacía, si es así // pide usuario y clave para ingresar al sistema // Se debe colocar la siguiente linea al principio de cada modulo: // // if(empty($_SESSION['IdUsuario'])) { include("validaUser.php"); } // <HTML> <BODY> <? include("estilos.inc"); $link = mysql_connect("localhost", "usuario","password"); mysql_select_db("base_datos", $link); if(!$_POST["validarClave"] and !$_POST["noValidarClave"] ) { // -------------------------------------------------------------------- // -------------------------------------------------------------------- // -- Parte 1 - $_SESSION['nIntentos'] siempre vale 1, por qué ??? ---- // -------------------------------------------------------------------- // -------------------------------------------------------------------- $_SESSION['lValidandoUser'] = TRUE; if( $_SESSION['nIntentos']>3 ) { ?> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=errorIngreso.php"> <? exit(); } ?> <TABLE WIDTH='100%'> <FORM METHOD="post" ACTION="<?echo $PHP_SELF;?>"> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <H2>Validación</H2> </TD> </TR> <TR> <TD VALIGN=MIDDLE ALIGN=right> <FONT CLASS=CargaDatos12>Usuario:</FONT> <INPUT TYPE="text" NAME="cfUsuario" SIZE="15" MAXLENGTH="15"> </TD> <TD VALIGN=MIDDLE> <FONT CLASS=CargaDatos12>Clave:</FONT> <INPUT TYPE="password" NAME="cfClave" SIZE="15" MAXLENGTH="15"> </TD> </TR> <TR><TD COLSPAN='2'><HR></TD></TR> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <INPUT TYPE="submit" VALUE="Aceptar" NAME="validarClave"> <INPUT TYPE="submit" VALUE="Salir" NAME="noValidarClave"> </TD> </TR> </FORM> </TABLE> <? }elseif($_POST["validarClave"]){ // -------------------------------------------------------------------- // -------------------------------------------------------------------- // -- Parte 2 - $_SESSION['nIntentos'] aquí si va acumulando pero --- // -- cuando vuelve a la parte 1, vuelve a valer 1, aunque acá --- // -- muestre 3 --- // -------------------------------------------------------------------- // -------------------------------------------------------------------- $_SESSION['nIntentos']++; $_SESSION['lValidandoUser'] = FALSE; $cUsuario = $_POST["cfUsuario"]; $cClave = $_POST["cfClave"]; $cMensajeError = ""; $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; $sql .= "clAdmin, clSuperUser, ccUsuario "; $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; $result = mysql_query( $sql, $link ); // cantidad de registros encontrados... $nTotFilas = mysql_num_rows( $result ); if($nTotFilas==1) { // asigna valores obtenidos a variables $datos = mysql_fetch_row($result); $iUsuario = $datos[0]; $cNomComple = $datos[1]; $cClaveEncrip = $datos[2]; $lSuspendido = ($datos[3]=="S"); $lAdmin = ($datos[4]=="S"); $lSuperUser = ($datos[5]=="S"); $cUsuTabla = $datos[6]; // hasta aquí encontró el nombre a lo "bruto", o sea // que a "OPERADOR" lo considera igual que a "operador". // verifica que minúsculas y mayúsculas coincidan... if(strcmp($cUsuTabla, $cUsuario)<>0) { $cMensajeError = INGRESO NO AUTORIZADO (ui)"; } }else{ $cMensajeError = "INGRESO NO AUTORIZADO (ui)"; } if(empty($cMensajeError) and $cClaveEncrip<>md5($cClave) ) { $cMensajeError = "INGRESO NO AUTORIZADO (ip)"; } if(empty($cMensajeError) and $lSuspendido) { $cMensajeError = "INGRESO NO AUTORIZADO (us)"; } if(empty($cMensajeError) ) { // identifica sistema if( ... ... ... $iSistema = $datos[0]; }else{ $cMensajeError = "PROBLEMAS AL IDENTIFICAR EL SISTEMA"; } } if(!empty($cMensajeError)) { // hay error, lo muestra y vuelve a la página anterior fErrorYPagAnt( $cMensajeError ); } // inicia variables de sesión... $_SESSION['IdSistema'] = $iSistema; $_SESSION['IdUsuario'] = $iUsuario; $_SESSION['cUsuario'] = $cUsuario; $_SESSION['cNomComple'] = $cNomComple; $_SESSION['lAdmin'] = $lAdmin; $_SESSION['lSuperUser'] = $lSuperUser; }elseif($_POST["noValidarClave"]){ ?> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=errorIngreso.php"> <? } ?> </BODY> </HTML> |
| | ||||
| ||||
| |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: > $sql = "SELECT IdUsuario, ccNomComple, ccClave, clSuspendido, "; > $sql .= "clAdmin, clSuperUser, ccUsuario "; > $sql .= "FROM Usuarios WHERE ccUsuario='".$cUsuario."'"; > $result = mysql_query( $sql, $link ); > // cantidad de registros encontrados... > $nTotFilas = mysql_num_rows( $result ); Te recomiendo hacer la comprobación: SELECT * FROM Usuarios WHERE ccUsuario=$cUsuario AND ccClave=MD5($cClave) AND clSuspendido='N' Y para comprobar si han introducido los datos correctamente te bastaría con una comprobación del tipo "si algún registro ha coincidido con eso": if (($datos = mysql_fetch_assoc ($result)) !== false) Por otro lado te recomiendo que uses fetch_assoc para recordar en el código qué columna es cada una y no tener que recordar cual es por el número de columna. Así te evitas tener que meterlas en variables intermedias como haces tú: > if($nTotFilas==1) { > // asigna valores obtenidos a variables > $datos = mysql_fetch_row($result); > $iUsuario = $datos[0]; > $cNomComple = $datos[1]; > $cClaveEncrip = $datos[2]; > $lSuspendido = ($datos[3]=="S"); > $lAdmin = ($datos[4]=="S"); > $lSuperUser = ($datos[5]=="S"); > $cUsuTabla = $datos[6]; etc... > // inicia variables de sesión... > $_SESSION['IdSistema'] = $iSistema; > $_SESSION['IdUsuario'] = $iUsuario; > $_SESSION['cUsuario'] = $cUsuario; > $_SESSION['cNomComple'] = $cNomComple; > $_SESSION['lAdmin'] = $lAdmin; > $_SESSION['lSuperUser'] = $lSuperUser; Si usas fetch_assoc podrás hacer: foreach ($datos as $clave => $valor) { $_SESSION[$clave] = $valor; } Así podrás agregar y quitar filas y columnas tantas veces como desees. Quizá te interese hacer antes un unset a la columna de la clave (para que en los archivos de sesiones no se guarde la clave, aunque sea codificada en md5). Por lo demás miraré el resto del código en un momento. Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: >Hola gente: >A ver si me pueden echar una mano, el tema me tiene bastante >desconcertado. >Mi intención es que después de 3 intentos, se le muestre una pantalla >de error, y al quedar la variable de sesión "nIntentos" mayor a 3, que >no le permita más intentar acceder, por lo menos hasta que cierre y >vuelva a abrir el navegador. Ok, hasta ahí está bien. >El asunto es que en la "Parte 1" la variable de sesión "nIntentos" >*siempre* vale 0, es decir, no toma el incremento de la "Parte 2". Falso. Lo toma correctamente. Me he tomado la molestia de hacer una versión reducida de tu script y hacer "echo"s por distintas zonas del código fuente. La variable de sesión siempre toma el valor que le corresponde en su sitio. >A lo mejor sea una pavada, pero la verdad a esta altura ya no se que >más probar. Debería funcionar bien. ¿En qué escenario no te funciona? ¿Podrías poner un ejemplo? >Todas las demás variables de sesión definidas en este módulo las >reconoce perfectamente en los demás módulos del sistema. >Les agradeceré cualquier pista... y si están cerca las cervezas corren >por mi cuenta ;-) No bebo, pero será bienvenido un buen zumito u otras bebidas sin gas ni alcohol ![]() El código en el que he probado el funcionamiento ha sido: <?php session_start(); if( !isset($_SESSION['nIntentos'])) { $_SESSION['nIntentos']=1; } ?> <HTML> <BODY> <?php if(!$_POST["validarClave"] and !$_POST["noValidarClave"] ) { // Parte 1 - $_SESSION['nIntentos'] siempre vale 1, por qué ??? // Comprobamos que eso no es cierto echo $_SESSION['nIntentos']; $_SESSION['lValidandoUser'] = TRUE; if( $_SESSION['nIntentos']>3 ) { ?> ERROR EN EL INGRESO (pasados 3 intentos)<? exit(); } ?> <TABLE WIDTH='100%'> <FORM METHOD="post" ACTION="<?echo $PHP_SELF;?>"> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <H2>Validación</H2> </TD> </TR> <TR> <TD VALIGN=MIDDLE ALIGN=right> <FONT CLASS=CargaDatos12>Usuario:</FONT> <INPUT TYPE="text" NAME="cfUsuario" SIZE="15" MAXLENGTH="15"> </TD> <TD VALIGN=MIDDLE> <FONT CLASS=CargaDatos12>Clave:</FONT> <INPUT TYPE="password" NAME="cfClave" SIZE="15" MAXLENGTH="15"> </TD> </TR> <TR><TD COLSPAN='2'><HR></TD></TR> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <INPUT TYPE="submit" VALUE="Aceptar" NAME="validarClave"> <INPUT TYPE="submit" VALUE="Salir" NAME="noValidarClave"> </TD> </TR> </FORM> </TABLE> <?php }elseif($_POST["validarClave"]){ // Parte 2 - $_SESSION['nIntentos'] aquí si va acumulando pero // cuando vuelve a la parte 1, vuelve a valer 1, aunque acá // muestre 3 // Compruebo que se incrementa: $_SESSION['nIntentos']++; echo $_SESSION['nIntentos']++; $_SESSION['lValidandoUser'] = FALSE; $cUsuario = $_POST["cfUsuario"]; $cClave = $_POST["cfClave"]; if($cUsuario != $cClave) { $cMensajeError = "INGRESO NO AUTORIZADO (us)"; } if(empty($cMensajeError) ) { // identifica sistema } if(!empty($cMensajeError)) { // hay error, lo muestra y vuelve a la página anterior echo $_SESSION['nIntentos']; echo( $cMensajeError ); } // inicia variables de sesión... $_SESSION['IdSistema'] = $iSistema; $_SESSION['IdUsuario'] = $iUsuario; $_SESSION['cUsuario'] = $cUsuario; $_SESSION['cNomComple'] = $cNomComple; $_SESSION['lAdmin'] = $lAdmin; $_SESSION['lSuperUser'] = $lSuperUser; }elseif($_POST["noValidarClave"]){ ?> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=errorIngreso.php"> <? } ?> </body> </html> Yme ha funcionado correctamente (claro, previo pulsar "atrás" cada vez que me dice que es autenticación incorrecta .Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: >Hola gente: >A ver si me pueden echar una mano, el tema me tiene bastante >desconcertado. >Mi intención es que después de 3 intentos, se le muestre una pantalla >de error, y al quedar la variable de sesión "nIntentos" mayor a 3, que >no le permita más intentar acceder, por lo menos hasta que cierre y >vuelva a abrir el navegador. Ok, hasta ahí está bien. >El asunto es que en la "Parte 1" la variable de sesión "nIntentos" >*siempre* vale 0, es decir, no toma el incremento de la "Parte 2". Falso. Lo toma correctamente. Me he tomado la molestia de hacer una versión reducida de tu script y hacer "echo"s por distintas zonas del código fuente. La variable de sesión siempre toma el valor que le corresponde en su sitio. >A lo mejor sea una pavada, pero la verdad a esta altura ya no se que >más probar. Debería funcionar bien. ¿En qué escenario no te funciona? ¿Podrías poner un ejemplo? >Todas las demás variables de sesión definidas en este módulo las >reconoce perfectamente en los demás módulos del sistema. >Les agradeceré cualquier pista... y si están cerca las cervezas corren >por mi cuenta ;-) No bebo, pero será bienvenido un buen zumito u otras bebidas sin gas ni alcohol ![]() El código en el que he probado el funcionamiento ha sido: <?php session_start(); if( !isset($_SESSION['nIntentos'])) { $_SESSION['nIntentos']=1; } ?> <HTML> <BODY> <?php if(!$_POST["validarClave"] and !$_POST["noValidarClave"] ) { // Parte 1 - $_SESSION['nIntentos'] siempre vale 1, por qué ??? // Comprobamos que eso no es cierto echo $_SESSION['nIntentos']; $_SESSION['lValidandoUser'] = TRUE; if( $_SESSION['nIntentos']>3 ) { ?> ERROR EN EL INGRESO (pasados 3 intentos)<? exit(); } ?> <TABLE WIDTH='100%'> <FORM METHOD="post" ACTION="<?echo $PHP_SELF;?>"> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <H2>Validación</H2> </TD> </TR> <TR> <TD VALIGN=MIDDLE ALIGN=right> <FONT CLASS=CargaDatos12>Usuario:</FONT> <INPUT TYPE="text" NAME="cfUsuario" SIZE="15" MAXLENGTH="15"> </TD> <TD VALIGN=MIDDLE> <FONT CLASS=CargaDatos12>Clave:</FONT> <INPUT TYPE="password" NAME="cfClave" SIZE="15" MAXLENGTH="15"> </TD> </TR> <TR><TD COLSPAN='2'><HR></TD></TR> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <INPUT TYPE="submit" VALUE="Aceptar" NAME="validarClave"> <INPUT TYPE="submit" VALUE="Salir" NAME="noValidarClave"> </TD> </TR> </FORM> </TABLE> <?php }elseif($_POST["validarClave"]){ // Parte 2 - $_SESSION['nIntentos'] aquí si va acumulando pero // cuando vuelve a la parte 1, vuelve a valer 1, aunque acá // muestre 3 // Compruebo que se incrementa: $_SESSION['nIntentos']++; echo $_SESSION['nIntentos']++; $_SESSION['lValidandoUser'] = FALSE; $cUsuario = $_POST["cfUsuario"]; $cClave = $_POST["cfClave"]; if($cUsuario != $cClave) { $cMensajeError = "INGRESO NO AUTORIZADO (us)"; } if(empty($cMensajeError) ) { // identifica sistema } if(!empty($cMensajeError)) { // hay error, lo muestra y vuelve a la página anterior echo $_SESSION['nIntentos']; echo( $cMensajeError ); } // inicia variables de sesión... $_SESSION['IdSistema'] = $iSistema; $_SESSION['IdUsuario'] = $iUsuario; $_SESSION['cUsuario'] = $cUsuario; $_SESSION['cNomComple'] = $cNomComple; $_SESSION['lAdmin'] = $lAdmin; $_SESSION['lSuperUser'] = $lSuperUser; }elseif($_POST["noValidarClave"]){ ?> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=errorIngreso.php"> <? } ?> </body> </html> Yme ha funcionado correctamente (claro, previo pulsar "atrás" cada vez que me dice que es autenticación incorrecta .Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |||
| On 29 Jan 2007 23:04:43 -0800, "wlinux***gmail.com" <wlinuxw***gmail.com> wrote: >Hola gente: >A ver si me pueden echar una mano, el tema me tiene bastante >desconcertado. >Mi intención es que después de 3 intentos, se le muestre una pantalla >de error, y al quedar la variable de sesión "nIntentos" mayor a 3, que >no le permita más intentar acceder, por lo menos hasta que cierre y >vuelva a abrir el navegador. Ok, hasta ahí está bien. >El asunto es que en la "Parte 1" la variable de sesión "nIntentos" >*siempre* vale 0, es decir, no toma el incremento de la "Parte 2". Falso. Lo toma correctamente. Me he tomado la molestia de hacer una versión reducida de tu script y hacer "echo"s por distintas zonas del código fuente. La variable de sesión siempre toma el valor que le corresponde en su sitio. >A lo mejor sea una pavada, pero la verdad a esta altura ya no se que >más probar. Debería funcionar bien. ¿En qué escenario no te funciona? ¿Podrías poner un ejemplo? >Todas las demás variables de sesión definidas en este módulo las >reconoce perfectamente en los demás módulos del sistema. >Les agradeceré cualquier pista... y si están cerca las cervezas corren >por mi cuenta ;-) No bebo, pero será bienvenido un buen zumito u otras bebidas sin gas ni alcohol ![]() El código en el que he probado el funcionamiento ha sido: <?php session_start(); if( !isset($_SESSION['nIntentos'])) { $_SESSION['nIntentos']=1; } ?> <HTML> <BODY> <?php if(!$_POST["validarClave"] and !$_POST["noValidarClave"] ) { // Parte 1 - $_SESSION['nIntentos'] siempre vale 1, por qué ??? // Comprobamos que eso no es cierto echo $_SESSION['nIntentos']; $_SESSION['lValidandoUser'] = TRUE; if( $_SESSION['nIntentos']>3 ) { ?> ERROR EN EL INGRESO (pasados 3 intentos)<? exit(); } ?> <TABLE WIDTH='100%'> <FORM METHOD="post" ACTION="<?echo $PHP_SELF;?>"> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <H2>Validación</H2> </TD> </TR> <TR> <TD VALIGN=MIDDLE ALIGN=right> <FONT CLASS=CargaDatos12>Usuario:</FONT> <INPUT TYPE="text" NAME="cfUsuario" SIZE="15" MAXLENGTH="15"> </TD> <TD VALIGN=MIDDLE> <FONT CLASS=CargaDatos12>Clave:</FONT> <INPUT TYPE="password" NAME="cfClave" SIZE="15" MAXLENGTH="15"> </TD> </TR> <TR><TD COLSPAN='2'><HR></TD></TR> <TR> <TD VALIGN=MIDDLE ALIGN=CENTER COLSPAN='2'> <INPUT TYPE="submit" VALUE="Aceptar" NAME="validarClave"> <INPUT TYPE="submit" VALUE="Salir" NAME="noValidarClave"> </TD> </TR> </FORM> </TABLE> <?php }elseif($_POST["validarClave"]){ // Parte 2 - $_SESSION['nIntentos'] aquí si va acumulando pero // cuando vuelve a la parte 1, vuelve a valer 1, aunque acá // muestre 3 // Compruebo que se incrementa: $_SESSION['nIntentos']++; echo $_SESSION['nIntentos']++; $_SESSION['lValidandoUser'] = FALSE; $cUsuario = $_POST["cfUsuario"]; $cClave = $_POST["cfClave"]; if($cUsuario != $cClave) { $cMensajeError = "INGRESO NO AUTORIZADO (us)"; } if(empty($cMensajeError) ) { // identifica sistema } if(!empty($cMensajeError)) { // hay error, lo muestra y vuelve a la página anterior echo $_SESSION['nIntentos']; echo( $cMensajeError ); } // inicia variables de sesión... $_SESSION['IdSistema'] = $iSistema; $_SESSION['IdUsuario'] = $iUsuario; $_SESSION['cUsuario'] = $cUsuario; $_SESSION['cNomComple'] = $cNomComple; $_SESSION['lAdmin'] = $lAdmin; $_SESSION['lSuperUser'] = $lSuperUser; }elseif($_POST["noValidarClave"]){ ?> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=errorIngreso.php"> <? } ?> </body> </html> Yme ha funcionado correctamente (claro, previo pulsar "atrás" cada vez que me dice que es autenticación incorrecta .Un saludo. -- Óscar Javier García Baudet LinaresDigital http://redstar.linaresdigital.com/ |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Variable de sesion | nieves | Newsgroup es.comp.lenguajes.php | 6 | 20-12-2007 12:36:04 |
| problema con este error Error 91: Object variable or With block variable not set | Jose Avilez | Newsgroup microsoft.public.es.vb | 1 | 10-12-2007 21:44:30 |
| Desaparece la variable de sesion | Viledevil | Newsgroup es.comp.lenguajes.php | 42 | 25-11-2006 20:18:45 |
| Problema con Variable Control en un Boton | Dalton | Newsgroup es.comp.lenguajes.c++ | 8 | 07-07-2006 17:41:39 |
| [preg]Visual Basic NET, problema con variable StreamReader | erque | Newsgroup es.comp.lenguajes.visual-basic | 0 | 29-10-2005 20:41:43 |