Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   como mantengo un valor despues de una recarga de la pagina (http://www.forosdelweb.com/f127/como-mantengo-valor-despues-recarga-pagina-582974/)

virla 05/05/2008 06:02

como mantengo un valor despues de una recarga de la pagina
 
El tema es que estoy haciendo un sistema de registracion usuarios el tema del login lo tengo casi resuelto salvo por el tema de que cuando presiono un F5 o presiono algun link me muestra de nuevo los imput txt para logear si bien dentro del sistema sabe que estoy logeado ya que cargo valores en server variables.
como puedo hacer para que el javascript sepa que esta logeado?
Si aprobecho para que me dijeran como puedo hacer para que cuando mande la consulta de logeo aparezca un espere o procesando y la imagen animada que se suele ver en esos casos
espero puedan en esta ocacion darme una mano
gracias

GatorV 05/05/2008 08:19

Re: como mantengo un valor despues de una recarga de la pagina
 
Hola virla,

Eso no lo manejas directamente con JavaScript, si en tu programa en el servidor, el sistema ya sabe que estas logueado, entonces al presionar F5 y dibujar tu pagina tu sistema debe de presentar el mensaje de que esta autentificado.

Para mostrar la imagen animada de espere, te pido busques en el foro, es un tema que ya se ha platicado mucho.

Saludos.

virla 05/05/2008 08:22

Re: como mantengo un valor despues de una recarga de la pagina
 
lamento decirte que el formulario de login vuelve a aparecer al refrescar la pagina eso es porque habria que poner una sentencia en el javascript que diga si estas logeado pasa de largo sino mostrar el formulario
gracias igual

virla 05/05/2008 08:29

Re: como mantengo un valor despues de una recarga de la pagina
 
por las moscas agrego mi codigo para que lo tengan
Código:

<script type="text/javascript">
<!--
    function CrearInstancia() {
        XMLHttp=false;
       
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            var versiones= ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
            for (var i=0;i<versiones.length;i++) {
                try {
                    XMLHttp = new ActiveXObject(versiones[i]);
                    if (XMLHttp) {
                        return XMLHttp;
                        break;
                    }
                   
                } catch (e) {};
            }
        }
    }
   
    function validarUsuario() {
        XMLHttp = CrearInstancia();
        if (XMLHttp){
            username = document.form.username.value;
            password = document.form.password.value;
            document.form.username.value="";
            document.form.password.value="";
           
            url="/modulos/login/login.asp?username="+username +"&password="+password;
            XMLHttp.open("POST",url,true)
            XMLHttp.onreadystatechange=cambiaEstado
            XMLHttp.send(null)
            } else{
            alert('No se pudo crear la instancia');
            }
        }
       
        function cambiaEstado(){
            var respuesta;
            if (XMLHttp.readyState==4) {
                if (XMLHttp.responseText == "1") {
                    document.all.CeldaUsuarioUno.style.display="none";
                    document.all.CeldaUsuarioUno.style.display="inline";
                } else if (XMLHttp.responseText == "2"){
                    respuesta="por favor complete username y password";
                }else if (XMLHttp.responseText == "0"){
                    respuesta="username / password icorrecto";
                }else{
                }
                document.getElementById("respuesta").innerHTML=respuesta;
            }
        }

    function sacarUsuario() {
        XMLHttp = CrearInstancia();
        if (XMLHttp){
            userName = document.form1.UserName.value;
            url="login.asp?username="+userName +"&salir='si'";
            XMLHttp.open("POST",url,true)
            XMLHttp.onreadystatechange=cambiaEstado1
            XMLHttp.send(null)
            } else{
            alert('No se pudo crear la instancia');
            }
        }
        function cambiaEstado1(){
            if (XMLHttp.readyState==4) {
                if (XMLHttp.responseText == "1") {
                    document.all.CeldaUsuarioDos.style.display="inline";
                    document.all.CeldaUsuarioDos.style.display="none";
                }
            }
        }
//-->
</script>
        <div id="ContLogin">
        <%if Session("usuario")="" then%>
            <div id="CeldaUsuarioUno" align="right" style="display:inline">
                <form name="form" id="form">
                    Usuario:&nbsp;
                    <span class="Login"><input name="username" type="text" id="username" size="8"></span>&nbsp;
                    Clave:&nbsp;
                    <span class="Login"><input name="password" type="password" id="password" size="8"></span>
                    <input type="button" value="Login" class="boton" onClick="validarUsuario();">&nbsp;<img src="/skins/aspectox/img/flecha.gif"><a href='/index.asp?ir=user&ira=edit&opc=formNuevo' class="LinkLogin">&nbsp;<span class="LinkLogin">Crear nuevo</span></a>
                </form>
            </div>
            <span id="respuesta" name="respuesta" class="MensajesErr">&nbsp;</span>
          <%else%>
            <div id="CeldaUsuarioDos" align="right" style="display:inline">
                <form name="form1" id="form1">
                    <span class="MensajesLogin">Bienvenido&nbsp;
                    <strong><%= Session("usuario") %></strong>&nbsp;
                        <input type=hidden name="UserName" value="<%= Session("usuario") %>">
                        <input type="button" value="Logout" class="boton" onClick="sacarUsuario();">
                    </span>
                </form>
            </div>
          <%END IF%>
        </div>

haa ahora recuerdo tambien que este codigo me muestra un error en la linea de respuesta el mensaje que larga es: undefined pero al presionar el f5 desaparece el mensaje y me muestra el boton de logout y la bienvenida.
Otra cosita mas es que me gustaria que al presionar enter en el nput name="password" ejecute la accion sin tener que presionar el boton
bueno ahora si gracias a los que puedan brindarme una mano

virla 06/05/2008 07:24

Re: como mantengo un valor despues de una recarga de la pagina
 
ayuda plis

GatorV 06/05/2008 08:11

Re: como mantengo un valor despues de una recarga de la pagina
 
Hola virla,

Como te comento, esto no lo manejas con JavaScript, una vez que estas logueado, tu programa en el servidor debe de saberlo, entonces al dibujar tu pagina con ASP, checas si esta logueado y si así es, dibujas entonces el mensaje de logout.

Deberías de preguntar tu duda en el foro de ASP, si es que no sabes como mantener el control de tu aplicación al estar logueado.

Saludos.

virla 06/05/2008 08:45

Re: como mantengo un valor despues de una recarga de la pagina
 
Perdoname GatorV, veo que sos el moderador de esta seccion, pero creo que deberias ver el codigo, el tema de asp lo tengo claro, y se que el problema esta con javascript que deberia recibir una opcion para saber que esta logeado y poner el div visible o no.
PD: cuando uno hace preguntas ponen que le pongamos el codigo y cuando lo ponemos para hacer el tema mas rapido en la respuestas, terminan por no verlos, el tema no es con vos, pero hace ya tiempo que veo que no hay muchas ganas de ayudar, hace unos años atras todos te brindaban ayuda, ojo que no busco que me hagan el laburo pero si espero que me orienten bien, y en este foro de ajax he visto muchos post sobre ajax /asp que no le han dado ayuda, y supuestamente todos dicen que es lo mismo que php, pues entonces no entiendo porque no poder ayudar.
Ojo aclaro que si bien este tema me pone mal, no estoy enojado y todo lo que digo lo hago con el respeto que cada persona merece.
gracias

caricatos 06/05/2008 08:48

Re: como mantengo un valor despues de una recarga de la pagina
 
Hola:

En muchas ocasiones se trata de un problema del sistema... que los datos que se tienen en memoria caché, se "rescatan" de esa memoria (ídem)... muchas veces basta con modificar algún parámetro "fastasma" de la url... una "chapuza" sería... url = url + "?" + new Date();

Saludos :arriba:

GatorV 06/05/2008 11:47

Re: como mantengo un valor despues de una recarga de la pagina
 
Y como una vez más te digo, es ASP el responsable de indicarle a Javascript, por ejemplo:
Código:

If bLoggueado = True Then
%>
<div id="CeldaUsuarioUno">
<h1>Bienvenido <%=sUserName%></h1>
<a href="logout.asp">Salir</a>
</div>
<% Else %>
<div id="CeldaUsuarioUno">
<form action="login.asp" method="post" onsubmit="return false;"><!-- ojo esto es importante por si no tiene Javascript activado -->
          Usuario: <input type="text" name="user" value="" />
          Password: <input type="password" name="pass" value="" />
          <input type="submit" name="enviar" value="Enviar" onclick="validarUsuario();" />
</form>
<div id="respuesta"></div>
</div>
<% End If %>

Si te fijas en el código, primero al dibujar la pagina con ASP, checa si la variable bLoggueado = True, si lo es, entonces no dibuja el código del Form para hacer login, si no presenta un mensaje con el nombre de usuario y un link para salir.

En caso contrario muestra el código para el form de login, y todo esto desde ASP, desde Javascript solo controlas la parte para hacer el login.

Saludos.

virla 09/05/2008 13:01

Re: como mantengo un valor despues de una recarga de la pagina
 
Les voy a seguir jodiendo porque hay cosas que no logro entenderlas.

si tengo esto
function cambiaEstado(){
var respuesta;
if (XMLHttp.readyState==4) {
if (XMLHttp.responseText == '1') {
document.all.CeldaUsuarioUno.style.display="none";
document.all.CeldaUsuarioDos.style.display="inline ";
} else if (XMLHttp.responseText == '2'){
respuesta="por favor complete username y password";
} else if (XMLHttp.responseText == '0'){
respuesta="username / password icorrecto";
}else{
}
document.getElementById("respuesta").innerHTML=res puesta;
}
}

y esto otro
<%IF Session("UserLoggedIn") = "False" OR Session("UserLoggedIn") = "" THEN%>
<div id="CeldaUsuarioUno" align="right" style="display:inline">
<form name="form" id="form" onsubmit="return false;">
Usuario:&nbsp;
<span class="Login"><input name="username" type="text" id="username" size="8"></span>&nbsp;
Clave:&nbsp;
<span class="Login"><input name="password" type="password" id="password" size="8"></span>
<input type="button" value="Login" class="boton" onClick="validarUsuario();">&nbsp;<img src="/skins/aspectox/img/flecha.gif"><a href='/index.asp?ir=user&ira=edit&opc=formNuevo' class="LinkLogin">&nbsp;<span class="LinkLogin">Crear nuevo</span></a>
</form>
</div>
<span id="respuesta" name="respuesta" class="MensajesErr">&nbsp;</span>
<%ELSE%>
<div id="CeldaUsuarioDos" align="right" style="display:none">
<form name="form1" id="form1" onsubmit="return false;">
<span class="MensajesLogin">Bienvenido&nbsp;
<strong><%= Session("USU_USERNAME") %></strong>&nbsp;
<input type=hidden name="UserName" value="<%= Session("USU_USERNAME") %>">
<input type="button" value="Logout" class="boton" onClick="sacarUsuario();">
</span>
</form>
</div>
<%END IF%>

no deberia ocultarme el div o ponermelo visible depende de como sea?

La cosa es que ahora no funciona y me muestra un mensaje el javascript undefined
Si bien cuando actualizo la pagina esta todo funcionando bien, eso quiere decir que paso por el javascript y por el asp donde verifica los datos y si estan bien continua

gracias por la ayuda anterior y debo reconocer que tenias razon, si bien por ahi no entendia bien a lo que te referias
gracias

GatorV 09/05/2008 14:45

Re: como mantengo un valor despues de una recarga de la pagina
 
Si te dice el error de javascript undefined, es porque estas tratando de leer, o poner una propiedad que no existe y es por eso que te marca el error.

Saludos.

killerangel 13/05/2008 22:48

Re: como mantengo un valor despues de una recarga de la pagina
 
Hola virla.

Creo q tienes q verificar el codigo que colocas y de seguro notaras q se trata de error de sintaxis. Verifica tambien el codigo, si hay, de las otras partes, funciones o paginas que interactuan con la que te da dudas. En la mayoria de casos como el tuyo se trata de error de sintaxis que con una buen ojeada y pasiencia podras notar el error.

Por otro lado, te comento, que esta web tiene usuarios con ganas de ayudar, sobretodo los moderadores...

Saludos.

virla 14/05/2008 05:57

Re: como mantengo un valor despues de una recarga de la pagina
 
ok pero ya revise la sintaxis como 5 veces y dado a que de javascript nada por ahi es algo que yo no se como va.
gracias

scabral 14/05/2008 06:27

Re: como mantengo un valor despues de una recarga de la pagina
 
Mira, recién estoy empezando con Javascript y esto puede ser una burrada pero creo que con un espacio de más ya salta error, fijate en el espacio extra detrás de "inline " y algún ";" faltante en style="display:inline">

Lo de guardar un valor no se puede hacer con cookies?

Cuando llegue a casa le doy un poco más de tiempo para revisar bien tu código y ver las referencias que tengo allí.

Saludos. Gustavo.
PD: A todo esto, no viene un depurador paso a paso que muestre valores de variables y cosas por el estilo??

virla 14/05/2008 12:32

Re: como mantengo un valor despues de una recarga de la pagina
 
Bueno con respecto al espacio entre inline parece que ya lo había arreglado pero aparentemente el error no esta ahí.
Desde ya agradezco mucho el tiempo que te distes de revisar mi codigo

virla 15/05/2008 08:51

Re: como mantengo un valor despues de una recarga de la pagina
 
me parece que el tema del error undefined que me sale es por esto ¿Creo?

Código:

        function cambiaEstado(){
            var respuesta;
            if (XMLHttp.readyState==4) {
                if (XMLHttp.responseText == "1") {
                    document.all.CeldaUsuarioUno.style.display="none";
                    document.all.CeldaUsuarioUno.style.display="inline";
                } else if (XMLHttp.responseText == "2"){
                    respuesta="por favor complete username y password";
                }else if (XMLHttp.responseText == "0"){
                    respuesta="username / password icorrecto";
                }else{
                }
                document.getElementById("respuesta").innerHTML=respuesta;
            }
        }

ya que de donde saque el codigo para reformar no figuraban dos else if y como ya explique antes de javascript nada de nada atine a hacer eso para porque necesitaba algo asi.
si alguien lo puede revisar y decirme si eso esta bien
gracias

GatorV 15/05/2008 12:27

Re: como mantengo un valor despues de una recarga de la pagina
 
El problema es que debes de hacer debugging de tu código, cuando te dice undefined es porque seguramente quieres leer una propiedad que no existe de algún elemento, te recomiendo si usas Firefox que bajes la extensión Firebug para que hagas un debug de tu código y veas donde esta fallando.

Saludos.

virla 15/05/2008 12:47

Re: como mantengo un valor despues de una recarga de la pagina
 
haa ok voy a probar con eso; pero me gustaria saber si el codigo ese que puse esta bien escrito

virla 16/05/2008 07:18

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
bueno he instalado en casa el firebug y lo probe y en casa si me tiro errores.
estos me los da aca

function CrearInstancia() {
XMLHttp=false;

if (window.XMLHttpRequest) { |cuando entra aca parece que esta el error porque entra y recibe el return new XMLHttpRequest()
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
var versiones= ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
for (var i=0;i<versiones.length;i++) {
try {
XMLHttp = new ActiveXObject(versiones[i]);
if (XMLHttp) {
return XMLHttp;
break;
}

} catch (e) {};
}
}
}


trate de poner otro codigo mas reducido
function CrearInstancia()
{
var XMLHttp=null;
if (window.ActiveXObject)
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
XMLHttp = new XMLHttpRequest();
return XMLHttp;
}

y sucede lo mismo

GatorV 16/05/2008 08:27

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
Verifica tus llaves { }, es de buena practica indentar el código y guardarlo entre sus respectivas llaves.

Saludos.

virla 16/05/2008 09:09

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
Ahora puse este que saque de las faq
function CrearInstancia() {
// Detectando que navegador se está usando...
if(navigator.appName == 'Microsoft Internet Explorer') {
XMLHttp = new ActiveXObject('Microsoft.XMLHTTP');
} else {
XMLHttp = new XMLHttpRequest();
}
return XMLHttp;
}

pero sigue con el problema del undefined
y con el tema de las {} como dije no tengo idea de javascript y lo que hago es copiar y modificar y por ahi puede que elgo del codigo este mal escrito o como decis vos las {} mal puestas o con faltantes pero segun la revisada que le pege yo estaria todo correcto

GatorV 16/05/2008 12:07

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
¿Estas completamente seguro de que el error de undefined es en esa parte? Ese código es correcto, no creo que el undefined venga de ahí.

Saludos.

virla 25/06/2008 13:40

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
Bueno despues de un tiempo he buelto a retomar este problema ya que trate de seguir avanzando con otras cosas.

ahora les dejo un link donde pueden ver una prueba y veras el error por vos mismo

http://rebcom.com.ar/pruebas/index.asp

Espero puedan ayudarme con esto
muchas gracias de antemano

GatorV 25/06/2008 14:38

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
Prueba esta función:
Código:

function cambiaEstado(){
                        var respuesta;
                        if (XMLHttp.readyState==4) {
                                alert( XMLHttp.responseText );
                                if (XMLHttp.responseText == "1") {
                                        document.all.ContLogin.style.display="none";
                                        document.all.ContLogout.style.display="inline";
                                } else if (XMLHttp.responseText == "2"){
                                        respuesta="por favor complete username y password";
                                }else if (XMLHttp.responseText == "3"){
                                        respuesta="username / password icorrecto";
                                }else{
                                }
                                document.getElementById("respuesta").innerHTML=respuesta;
                        }
                }

y dime que respuesta te da.

Saludos.

virla 26/06/2008 06:13

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
me sale una ventana de alerta con el codigo pero no puedo verlo todo ya que sobrepasa la pantalla
te dejo una imagen de lo que se llega a leer
http://rebcom.com.ar/pruebas/img_error.jpg

GatorV 26/06/2008 08:08

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
El problema es claro, tu pagina login.asp no esta regresando el valor que debería, ya que si te fijas el alert debería de ser, 1, o 2, o 3, y sin embargo te da una pagina web completa.

Saludos.

virla 26/06/2008 08:10

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
ok, pero como puede ser que cuando actualizo me toma como que estoy logeado?

virla 26/06/2008 08:59

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
no hay nada de esto hecho en php que pueda ser adaptado a asp?

GatorV 26/06/2008 10:49

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
Lo que pasa es que al actualizar vuelves a dibujar la pagina, por ende te muestra como logueado.

Necesitas implementar que tu script en ASP solo devuelva un valor, y este sea 1, o 2, o 3. para que lo adaptes a tu script en AJAX, ya que si devuelves toda la pagina completa te pasa eso.

Saludos.

virla 26/06/2008 10:52

Respuesta: como mantengo un valor despues de una recarga de la pagina
 
vos lo que me decis es que el problema esta en el asp que busca el valor en la db?


La zona horaria es GMT -6. Ahora son las 09:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.