Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.php
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 30-01-2007, 07:04:43
wlinux@gmail.com
 
Mensajes: n/a
Predeterminado Problema con variable de sesión...

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&oacute;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>

Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #3 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #4 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #5 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #6 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #7 (permalink)  
Antiguo 30-01-2007, 13:18:50
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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/
Responder Con Cita
  #8 (permalink)  
Antiguo 30-01-2007, 13:35:39
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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&oacute;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/
Responder Con Cita
  #9 (permalink)  
Antiguo 30-01-2007, 13:35:39
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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&oacute;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/
Responder Con Cita
  #10 (permalink)  
Antiguo 30-01-2007, 13:35:39
Oscar Garcia
 
Mensajes: n/a
Predeterminado Re: Problema con variable de sesión...

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&oacute;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/
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


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





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.