Webly: Sistema de login e senha - Webly

Ir para

Regras para postagem no fórum

É permitido postar livremente respostas com comentários, testes e avaliações dos scripts. Postagens contendo dúvidas sobre o script, deverão ser postadas no fórum principal de ASP.

IMPORTANTE: Todos os tutoriais postados neste fórum irão automaticamente para o portal Webly. Contribua você também e faça parte da equipe de colaboradores que fazem a evolução da web. Obrigado.
  • (2 Páginas)
  • +
  • 1
  • 2

Sistema de login e senha Avaliar tópico: -----

#1 Membro offline   Lucasbr Ícone

  • O.o
  • Ícone
  • Grupo: Administradores
  • Posts: 2441
  • Cadastrado: 03-julho 06
  • Localização:SBC - SP
  • Interesses:Meus interesses

Ícone  Postou 01 agosto 2006 - 10:37

Salve galera, blz?

Bom, hj vou postar um script de login e senha q utilizo em meus sistemas. Apesar de ser bem simples, é bastante eficaz, tem algumas prevençoes contra SQL injection e possui o recurso que ao direciona o usuario para a tela de login, ele grava a ultima pagina q o usuario tentou acessar e depois de logado, leva novamente o usuario para a mesma.

Bom, a estrutura do banco é a seguinte:


Imagem

O nome q adotei para este banco de dados é : meu_banco.mdb

O codigo completo do sistema pode ser baixado aqui!

login.asp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="Javascript" type="text/Javascript">
function ValidaCadastro(form)
{
	   
	 if (form.frm_login.value == "")
	 {
	   alert("Login não Informado!");
	   return false;
	 }
	 else if (form.frm_senha.value == "")
	 {
	   alert("Senha não informada!");
	   return false;
	 }
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login</title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 00px;
	margin-right: 0px;
	margin-bottom: 0px;
}
body,td,th {
	font-family: Verdana;
	color: #333333;
}
.style1 {
	color: #CC0000;
	font-weight: bold;
}
-->
</style></head>

<body>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td align="center" valign="middle"><form action="valida_login.asp" method="post" name="form" onsubmit="return ValidaCadastro(this)">
	  <table width="35%" border="2" align="center" cellpadding="5"cellspacing="0" bordercolor="#666666" class="categoria">
	  <tr>
		<td colspan="2"><div align="center" class="style1">&Aacute;rea restrita </div></td>
		</tr>
	  <tr>
		<td bgcolor="#E8E8E8"><strong>Login:</strong></td>
		<td bgcolor="#E8E8E8"><div align="left">
			<input name="frm_login" type="text" id="frm_login" size="15" />
		</div></td>
	  </tr>
	  <tr>
		<td bgcolor="#E8E8E8"><strong>Senha:</strong></td>
		<td bgcolor="#E8E8E8"><div align="left">
			<input name="frm_senha" type="password" id="frm_senha" size="15" maxlength="8" />
		</div></td>
	  </tr>
	  <tr>
		<td>&nbsp;</td>
		<td align="right"><div align="left">
			<input name="Enviar" type="submit" class="Botao" id="Enviar" value="Entrar" />
		  &nbsp;&nbsp;&nbsp; </div></td>
	  </tr>
	</table>
	</form></td>
  </tr>
</table>
</body>
</html>


valida_login.asp
<%
'Recuperamos o dados que foram digitados no formulário 
'e já substituimos as aspas simples por aspas duplas

login = request.form(Replace("frm_login", "'", "''"))
senha = request.form(Replace("frm_senha", "'", "''"))

'Verificamos se os campos nao estao vazio
if login = "" then
response.redirect "login.asp"
response.end()
end if

if senha = "" then
response.redirect "login.asp"
response.end()
end if

'Evitando o SQL injection, ou simplesmente a entrada forçada

login = replace(login,"'","''")
login = replace(login,"#","''")
login = replace(login,"$","''")
login = replace(login,"%","''")
login = replace(login,"¨","''")
login = replace(login,"&","''")
login = replace(login,"'or'1'='1'","''")
login = replace(login,"--","''")
login = replace(login,"insert","''")
login = replace(login,"drop","''")
login = replace(login,"delet","''")
login = replace(login,"xp_","''")
login = replace(login,"select","''")
login = replace(login,"*","''")

'Evitando o SQL injection, ou simplesmente a entrada forçada
senha = replace(senha,"'","''")
senha = replace(senha,"#","''")
senha = replace(senha,"$","''")
senha = replace(senha,"%","''")
senha = replace(senha,"¨","''")
senha = replace(senha,"&","''")
senha = replace(senha,"'or'1'='1'","''")
senha = replace(senha,"--","''")
senha = replace(senha,"insert","''")
senha = replace(senha,"drop","''")
senha = replace(senha,"delet","''")
senha = replace(senha,"xp_","''")
senha = replace(senha,"select","''")
senha = replace(senha,"*","''")

'Criamos a conexao com o banco de dados.
set conexao = Server.CreateObject("ADODB.Connection")
conexao.provider= "Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("meu_banco.mdb")&";"
conexao.open

'Vamos buscar o Login e senha no banco de dados
SQL = "select * from usuarios where login_usuario = '"&login&"' and senha_usuario = '"&senha&"' "
Set RS = Conexao.Execute(SQL)


'Verificamos se esta tudo OK.Se nao tiver, é mostrada a mensagem abaixo.
If RS.EOF Then
  Response.Write "<center><b>Login ou Senha errada. Tente novamente!</b></center>"
  Response.End()
End If

'Vamos colocar os dados do usuario logado numa session
'para usarmos mais tarde e fazer a verificação se ele esta logado.

'OBS.: Nao utilize nomes obvios para esta session(evita a invasão).
session("usr_log_ok") = RS("id_usuario")

'Agora vamos gravar o IP do usuario no Banco de dados.

ip_usuario = Request.ServerVariables("REMOTE_ADDR")
SQL2 = "Update usuarios set ip_usuario='"&ip_usuario&"' where id_usuario="&rs("id_usuario")
conexao.execute(sql2)

'fecha e destroi o record set
rs.close
set rs = nothing

'fecha a conexao
conexao.close

'redirecionando para a pagina Administrativa(restrita) ou para
'a ultima pagina q o usuario estava.

If Session("pagina_restrita") = "" then
response.Redirect("admin.asp")
else
response.Redirect Session("pagina_restrita")
end if
%>


admin.asp
<%
'este trecho deve estar em todas as paginas em que o conteudo for restrito.
If session("usr_log_ok")="" Then 
  Response.Write "Você está Logado no sistema!"
  Response.write "<a href='login.asp'>Clique aqui para se logar.</a>"
  
  ' Caso voce queira utilizar esse scripts para paginas que necessitem querystring's ou
  'fazer o usuario, após se logar, voltar para a pagina que estava, manhenha o codigo abaixo
  'lembrando q se a pagina contiver querystring's, vc deve trocar o nome da variavel ID.
  'Se nao for seu caso, vc pode simplesmente comentar a linha abaixo usando um ' antes da session
  
  Session("pagina_restrita") = Request.ServerVariables("SCRIPT_NAME")&"?"&request.ServerVariables("QUERY_STRING")
  
  'aqui para de executar o script caso a pessoa nao esteja logada.
  Response.End()
End If

'Criamos a conexao com o banco de dados.
set conexao = Server.CreateObject("ADODB.Connection")
conexao.provider= "Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("meu_banco.mdb")&";"
conexao.open

'Vamos buscar o usuario no banco de dados
SQL = "select * from usuarios where id_usuario ="&session("usr_log_ok")
Set RS = Conexao.Execute(SQL)
If rs.eof then
Response.write "Ocorreu um Erro!"
Else

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Administrador</title>
</head>

<body>
Olá, <%=rs("nome_usuario")%>. Seu IP é: <%= rs("ip_usuario")%> 

<p>Aqui você coloca todo seu conteudo restrito.</p>
</body>
</html>
<%end if%>


Bom galera, é isso. qualquer duvidas postem ai.

Espero q seja de grande ajuda.

Abraço
LucasBr
Lucas Cavallari

Dúvidas? No fórum... nada de MP nem MSN...!
Se a resposta te ajudou, retorne ao topico e diga, pois facilitará para outros usuarios...
0

#2 Membro offline   Daniel Caliope Ícone

  • www.twitter.com/dcaliope
  • Ícone
  • Grupo: Administradores
  • Posts: 1836
  • Cadastrado: 17-julho 06
  • Localização:São Paulo
  • Interesses:Web, Tecnologia e Gadgets.

Postou 02 agosto 2006 - 10:28

Legal esse tuto simples e fácil, agora você poderia mostrar como faz um sistema de cadastro nesse mesmo banco né!?! Assim ficaria já o sistema completo!!

Abraços....
########### WEBLY ###########

» Engles eu não cei, mas porrtuguez eu çou fera.

Processador Phenom X4 9550 Quadcore (4 núcleos reais)
8 GB Memória RAM
1 TB HD Sata II
Mobo Asus M3A - Deluxe
Placa de Vídeo ATI HD 4870 512MB
0

#3 Membro offline   Lucasbr Ícone

  • O.o
  • Ícone
  • Grupo: Administradores
  • Posts: 2441
  • Cadastrado: 03-julho 06
  • Localização:SBC - SP
  • Interesses:Meus interesses

Postou 02 agosto 2006 - 11:36

Eu ja estava preparando um esuqema desse mesmo caliope. e ainda vou colocar a funçao de "recuperar senha", na qual se o cara esquece a senha dele, ele recebe no email uma copia.
Lucas Cavallari

Dúvidas? No fórum... nada de MP nem MSN...!
Se a resposta te ajudou, retorne ao topico e diga, pois facilitará para outros usuarios...
0

#4 Membro offline   Joaquim Tito Ícone

  • http://magotito.labrute.fr http://magotito.mybrute.com
  • Ícone
  • Grupo: Membro Amigo
  • Posts: 1134
  • Cadastrado: 07-julho 06
  • Localização:São Paulo
  • Interesses:Informática e descontração.

Ícone  Postou 02 agosto 2006 - 02:24

Ver postCaliope, em Aug 2 2006, 10:28 AM, disse:

Legal esse tuto simples e fácil, agora você poderia mostrar como faz um sistema de cadastro nesse mesmo banco né!?! Assim ficaria já o sistema completo!!
Abraços....

Não alimente os tubarões...
Vc dá a mão, eles querem o braço :woot: :sm_cool:

Vai ficar bacana Lucas!
Índio

* Acessou o fórum e achou sua informação? Então cadastre-se e poste como a ajuda foi válida e se foi válida.Não achou a informação na busca? Poste que teremos o maior prazer em ajudá-lo!
* Tutorial + grana? Só no webly! Acesse: http://forum.webly.com.br/index.php?showtopic=16220
* Faço parte da campanha: Não assassine a língua portuguesa. Tenha modos ao escrever para que todos consigam entender a sua dúvida.
"Engles eu não cei, mas porrtuguez eu çou fera."(By Caliope)
0

#5 Membro offline   Thiago Ananias Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 1033
  • Cadastrado: 14-julho 06
  • Localização:São Paulo - SP

Postou 02 agosto 2006 - 02:30

sabe oq seria legal implementar... tipow, quando vc tenta se logar na locaweb, e erra varias vezes deve ser uma cinco ou tres tentativas... ele deixa o sistema travado por um tempo para esta maquina. Mas outras podem se logar na boa... sei lah eh uma sugestão ! FLW!!!!
Nhenhenhê, tititi, blábláblá!!
0

#6 Membro offline   romart Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 2
  • Cadastrado: 21-fevereiro 07

Postou 21 fevereiro 2007 - 01:07

Beleza Lucas! Eu tô procurando um sistema assim à tempos. Mas agora eu tô com um carro na mão, a chave, tanque cheio... mas não sei dirigir! Entendeu??? Não sei se seria o caso aqui, mas dá pra dar uma força extra. Por exemplo: No meu site, qual seria a página index? ou seja a págian para fazer login? seria a Login (active server document)??? Se for, depois de feito login, ela direciona para a Admin ??? Então seria nesta página (Admin) que eu colocaria o conteúdo do meu site? E o banco de dados ? Onde coloco no hospedeiro? DESCULPE TANTAS DÚVIDAS, É QUE EU SOU INICIANTE NO ASSUNTO, TÔ COMEÇANDO AGORA!
0

#7 Membro offline   Lucasbr Ícone

  • O.o
  • Ícone
  • Grupo: Administradores
  • Posts: 2441
  • Cadastrado: 03-julho 06
  • Localização:SBC - SP
  • Interesses:Meus interesses

Postou 21 fevereiro 2007 - 01:38

bom, funciona assim:

A pagina login.asp é o formulário que o usuario preenche para se logar no site.

a pagina valida_login.asp é a pagina q verifica a existencia do usuario no banco de dados, ou seja, se o usuario estiver cadastrado, ok, senao ele recusa.

ai entra o ponto chave. como saber se o usuario esta logado no sistema, ou seja, se ele esta cadastrado no banco de dados e seu login e senha foram aceitos?

pra isso eu crio uma session, q é um objeto utilizado para guardar informacoes, entre outras funcionalidades.

esta session é criada na pagina valida_login.asp

session("usr_log_ok") = RS("id_usuario")


e nela eu armazeno o ID do usuario cadastrado.

para verificar nas paginas restritas se o usuario esta logado, faço assim:

If session("usr_log_ok")="" Then
  Response.Write "Você está Logado no sistema!"
  Response.write "<a href='login.asp'>Clique aqui para se logar.</a>"
  Response.End()
End If


isso é uma verificaçao para a session que eu criei acima... ela verifica se esta vazia, e se estiver, ela faz o usuario voltar para o formulario de login.

neste exemplo que postei aqui no forum, eu uso para restringir o acesso a area administrativa, mas poderia utilizar ela para N finalidades.

quanto ao banco de dados, vc pode colocar ele dentro de uma pasta chamada dados no servidor e mudar a conexao para:

'Criamos a conexao com o banco de dados.
set conexao = Server.CreateObject("ADODB.Connection")
conexao.provider= "Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("dados/meu_banco.mdb")&";"
conexao.open


bom , acho q é so.

qq cosia, é so falar.
Lucas Cavallari

Dúvidas? No fórum... nada de MP nem MSN...!
Se a resposta te ajudou, retorne ao topico e diga, pois facilitará para outros usuarios...
0

#8 Membro offline   romart Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 2
  • Cadastrado: 21-fevereiro 07

Postou 23 fevereiro 2007 - 11:04

:wacko: Valeu Lucas ! Mas acho que preciso estudar mais o assunto. Se não vou ficar aqui muito tempo. Pra no final te pedir: "Por favor, dá pra fazer pra mim...???". Mas prometo. Vou me dedicar e quando conseguir, volto pra te mostrar o resultado. Kra gosto muitos das suas dicas e estou aprendendo cada dia um pouquinho. Um grande abraço!

:clap: :joia: :bye:
0

#9 Membro offline   webdesign.lucas Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 1
  • Cadastrado: 25-fevereiro 07

Postou 25 fevereiro 2007 - 11:03

e isso ai tambem so novo e to aprendendo
mais ta blz agente aprende aos poucos. né
se seis tive umas apostila sobre essa paraa de login area restrita painel de controle e tal manda ai pro meu e-mail se vcis pude blz

webdesign.lucas@gmail.com
0

#10 Membro offline   Marcelo CDG Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 19
  • Cadastrado: 03-dezembro 06

Postou 25 março 2007 - 04:00

Oi Lucas,

Pra que serve esse trecho na página admin.asp?

If rs.eof then
Response.write "Ocorreu um Erro!"
Else...


Se o usuário já foi logado isso não seria sempre falso e conseqüentemente o else é que seria sempre executado tornando o if desnecessário?

Um abraço,

Marcelo
0

#11 Membro offline   Lucasbr Ícone

  • O.o
  • Ícone
  • Grupo: Administradores
  • Posts: 2441
  • Cadastrado: 03-julho 06
  • Localização:SBC - SP
  • Interesses:Meus interesses

Postou 25 março 2007 - 05:40

é so por tratamento de erro mesmo... sempre testos todos os recordsets, mesmo sabendo q eles nao estao vazios...
Lucas Cavallari

Dúvidas? No fórum... nada de MP nem MSN...!
Se a resposta te ajudou, retorne ao topico e diga, pois facilitará para outros usuarios...
0

#12 Membro offline   Marcelo CDG Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 19
  • Cadastrado: 03-dezembro 06

Postou 25 março 2007 - 06:05

Entendi, obrigado!
0

#13 Membro offline   BiaMarinho Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 2
  • Cadastrado: 28-março 07

Postou 28 março 2007 - 02:18

Mto bom, estou há um tempão procurando um sistema simples como esse q vc postou!!!!!!!!

Só q estou com um probleminha... Meu site está hospedado no GeoCities, então eu não consigo enviar os arquivos .asp p/ lá. Eu poderia salvá-los como .htm ou alguma outra extensão, ou só funciona como .asp mesmo?

Se for o caso, será eu poderia manter apenas o valida_login.asp e hospedá-lo em outro provedor? O código funcionaria se eu usasse http://........./valida_login.asp?

Brigadão mesmo!!!!!!!!!
0

#14 Membro offline   Thiago Ananias Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 1033
  • Cadastrado: 14-julho 06
  • Localização:São Paulo - SP

Postou 28 março 2007 - 02:23

Tem de ser .ASP, uma solucao seria hospedar no domaindlx.com, ele é gratis, pq vc naum hospeda lá?
Nhenhenhê, tititi, blábláblá!!
0

#15 Membro offline   BiaMarinho Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 2
  • Cadastrado: 28-março 07

Postou 29 março 2007 - 06:27

Ok, Thiago, obrigada! O domaindlx usa pop-up, mas achei o nofeehost, q tbm aceita asp e não tem propaganda. Funcionou perfeitamente!!!

Queria saber tbm se dá p/ usar os dados do usuário logado em um guestbook. Da mesma forma q ele usa "Olá, 'nome_usuario', seu IP é 'ip_usuario' ", eu queria saber se é possível p/ enviar esses dados junto com o formulario do gb, q estaria na página restrita.
0

  • (2 Páginas)
  • +
  • 1
  • 2


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)