Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silas Martins

Gerenciando login com Cookies

Recommended Posts

Muitos sites exigem que você se registre para poder ter acesso ao conteúdo . Geralmente este registro é gratuito , e, após você se registrar precisa efetuar o login para usar o site. Alguns sites permitem que você configure o seu login como automático. Nesta forma o navegador vai 'memorizar' a sua identificação e assim você não vai precisar digitar seu nome de usuário e sua senha toda vez que for acessar o site. Esta memorização geralmente utiliza cookies.

 

Vou tentar simular este mecanismo usando criando algumas páginas ASP :

 

1. Uma página para efetuar o login : login.asp

2. uma página para efetuar o logout : logout.asp

3. uma página que exige que seja feito o login para que você possa acessá-la : teste.asp

 

Vamos iniciar com a página de login. O arquivo login.asp contém o script com o código para gerenciar os cookies e o formulário HTML. Abaixo temos o código de login.asp. Estou comentando o código e destacando em linhas azuis.

 

 

 

Nota: Estou usando como linguagem de script o JavaScript.

 

 

<%@ LANGUAGE="JAVASCRIPT" %>
<%

//declara as variáveis que serão usadas na página
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 usuário esta vazio , se estiver tenta capturar o nome do usuário,
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 usuário 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 página default : logout.asp
if((destino==null) || (destino==""))
   destino = "logout.asp";

//Se nome do usuário NÃO for null ou NÃO for vazio então pega ele do cookie
if((nomeusuario!=null) && (nomeusuario!=""))
{
 Response.Cookies("nomeusuario")=nomeusuario;

 //Se lembrar estiver ativo então define uma data de expiração 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 usuário para o destino
Response.Redirect(destino);
}
%>
//Aqui temos o formulário com os dados que o usuário deverá informar
<html>
<head>
<title>Gerenciando logins com cookies</title>
</head>
<body>

//Aqui temos o formulário com os dados que o usuário deverá informar

<html>

<head>

<title>Gerenciando logins com cookies</title>

</head>

<body>[/code]

 

//Ao clicar no botão Efetuar login será chamado a página login.asp com o parâmetro destino igual ao que for definido no código

<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 página de logout no arquivo logout.asp. O código é bem simples é dado a seguir :

 

 

<%@ LANGUAGE="JAVASCRIPT" %>
<%
var nomeusuario;

// tenta obter o cookie para o usuário
nomeusuario = Request.Cookies("nomeusuario");

// se o usuário for indefinido atribui null
if((""+nomeusuario) == "undefined")
	  nomeusuario = null;

//se foi pressionado o botão de logout ou usuário for null ou vazio define o cookie como vazio e redireciona
// o usuário para a pagina de login
if((Request.Form("logout") == "logout") || (nomeusuario==null) || (nomeusuario==""))
{
 Response.Cookies("nomeusuario") = "";
 Response.Redirect("login.asp");
}

%>

<html>
<head>
<title>Página de Logout</title>
</head>
<body>
//exibe o nome do usuário que se logou e direciona para a página 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 página de teste , teste.asp.

 

 

<%@ LANGUAGE="JAVASCRIPT" %>
<%
var nomeusuario=null;

// pega o usuário do cookie
nomeusuario = Request.Cookies("nomeusuario");

// se o usuário estiver indefinido atribui null
if((""+nomeusuario) == "undefined")
	 nomeusuario = null;

// se o usuário for null ou vazio então 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 usuário indicou que deseja que sua senha e nome fossem 'lembrados' ao acessar a página de teste - teste.asp - ele já estará autenticado.

 

 

 

Para testar os scripts eu usei oPersonal Web Server e salvei todos os arquivos na pasta login em c:\inetpub\wwwroot.

Boa Sorte e espero que tenham gostado do tutorial

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.