Você está na página 1de 5

ASP Bsico - Usando cookies para gerenciar logins

Com certeza voc j ouviu falar de cookies. Com certeza tambm j usou cookies em suas navegaes pela WEB. Pois vamos falar ento de cookies. Para saber mais sobre cookies leia o meu artigo em :
ambiente. ASP -Gerenciando informaes e o

Muitos sites exigem que voc se registre para poder ter acesso ao contedo . Geralmente este registro gratuito , e, aps voc se registrar precisa efetuar o login para usar o site. Alguns sites permitem que voc configure o seu login como automtico. Nesta forma o navegador vai 'memorizar' a sua identificao e assim voc no vai precisar digitar seu nome de usurio e sua senha toda vez que for acessar o site. Esta memorizao geralmente utiliza cookies. Vou tentar simular este mecanismo usando criando algumas pginas ASP :

1. Uma pgina para efetuar o login : login.asp 2. uma pgina para efetuar o logout : logout.asp 3. uma pgina que exige que seja feito o login para que voc possa acess-la :
teste.asp Vamos iniciar com a pgina de login. O arquivo login.asp contm o script com o cdigo para gerenciar os cookies e o formulrio HTML. Abaixo temos o cdigo de login.asp. Estou comentando o cdigo e destacando em linhas azuis. Nota: Estou usando como linguagem de script o JavaScript. <%@ LANGUAGE="JAVASCRIPT" %> <% //declara as variveis que sero usadas na pgina var nomeusuario=null; var senha=null; var lembrar=null; var destino=null; //Tenta obter um cookie nomeusuario = Request.Cookies("nomeusuario"); //Se o valor retornado for indefinido substitui por null if((""+nomeusuario) == "undefined") nomeusuario = null; //Verifica se existe um destino definido destino = Request.QueryString("destino"); //verifica se o cookie para o nome do usurio esta vazio , se estiver tenta capturar o nome do usurio, a senha e o indicativo para lembrar a senha if((nomeusuario==null) || (nomeusuario==""))

nomeusuario = Request.Form("nomeusuario"); senha = Request.Form("senha"); lembrar = Request.Form("lembrar");

//aqui estamos permitindo que o login seja efetuado se a senha e o nome forem iguais if((nomeusuario != senha) && !eval("\""+nomeusuario+"\"==\""+senha+"\"")) nomeusuario=null; } // se o nome do usurio e o destino forem indefinidos atribua null if((""+nomeusuario) == "undefined") nomeusuario = null; if((""+destino) == "undefined") destino = null; //se destino for null ou estiver vazio defina para pgina default : logout.asp if((destino==null) || (destino=="")) destino = "logout.asp"; //Se nome do usurio NO for null ou NO for vazio ento pega ele do cookie if((nomeusuario!=null) && (nomeusuario!="")) { Response.Cookies("nomeusuario")=nomeusuario; //Se lembrar estiver ativo ento define uma data de expirao para cookie if(lembrar=="on") { var expire,expireString; var month,year; expire = new Date(); month = expire.getMonth(); year = expire.getFullYear(); if(month == 11) { month = 0; year = year+1; } else { month = month+1; } expire.setMonth(month); expire.setFullYear(year); expireString = expire.toLocaleString(); Response.Cookies("nomeusuario").Expires = expireString;

} //direciona o usurio para o destino Response.Redirect(destino); } %> //Aqui temos o formulrio com os dados que o usurio dever informar <html> <head> <title>Gerenciando logins com cookies</title> </head> <body> //Ao clicar no boto Efetuar login ser chamado a pgina login.asp com o parmetro destino igual ao que for definido no cdigo <form method="POST" action="login.asp?destino=<%=destino%>"> <table border=0> <tr> <td>Nome:</td> <td><input type="text" name="nomeusuario" size=12></td> </tr> <tr> <td>Senha:</td> <td><input type="password" name="senha" size=12></td> </tr> <tr> <td>lembrar Login:</td> <td><input type="checkbox" name="lembrar" value="on"></td> </tr> <tr colspan=2> <td><center><input type="submit" value="Efetuar Login"></center></td> </tr> </table> </form> </body> </html> Vamos definir agora a pgina de logout no arquivo logout.asp. O cdigo bem simples dado a seguir : <%@ LANGUAGE="JAVASCRIPT" %> <% var nomeusuario; // tenta obter o cookie para o usuario nomeusuario = Request.Cookies("nomeusuario"); // se o usuario for indefinido atribui null if((""+nomeusuario) == "undefined") nomeusuario = null; //se foi pressionado o boto de logout ou usuario for null ou vazio define o cookie como

vazio e redireciona // o usurio para a pagina de login if((Request.Form("logout") == "logout") || (nomeusuario==null) || (nomeusuario=="")) { Response.Cookies("nomeusuario") = ""; Response.Redirect("login.asp"); } %> <html> <head> <title>Pgina de Logout</title> </head> <body> //exibe o nome do usurio que se logou e direciona para a pgina logout.asp Ol , <%=nomeusuario%>. <form method="POST" action="logout.asp"> <input type="submit" value="Logout"> <input type="hidden" name="logout" value="logout"> </form> </body> </html>

Finalmente a pgina de teste , teste.asp. <%@ LANGUAGE="JAVASCRIPT" %> <% var nomeusuario=null; // pega o usurio do cookie nomeusuario = Request.Cookies("nomeusuario"); // se o usurio estiver indefinido atribui null if((""+nomeusuario) == "undefined") nomeusuario = null; // se o usuario for null ou vazio ento manda ela fazer o login if((nomeusuario==null) || (nomeusuario=="")) { Response.Redirect("login.asp?destino=teste.asp"); } %> <html> <head> <title>Gerenciando login com cookies</title> </head> <body> Voc esta autenticado ! </body>

</html> Se o usurio indicou que deseja que sua senha e nome fossem 'lembrados' ao acessar a pgina de teste - teste.asp - ele j estar autenticado. Para testar os scripts eu usei o Personal Web Server e salvei todos os arquivos na pasta login em c:\inetpub\wwwroot. Abaixo a sequncia de telas indicando um login feito com sucesso e acesso a pgina de teste:

Aguarde novos artigos sobre ASP bsico ...

Você também pode gostar