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:
O nome q adotei para este banco de dados é : meu_banco.mdb
O codigo completo do sistema pode ser
baixado aqui!
login.asp
CODE
<!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">Á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> </td>
<td align="right"><div align="left">
<input name="Enviar" type="submit" class="Botao" id="Enviar" value="Entrar" />
</div></td>
</tr>
</table>
</form></td>
</tr>
</table>
</body>
</html>
valida_login.asp
CODE
<%
'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
CODE
<%
'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
Comentários:
Daniel Caliope disse:
Abraços....
Lucasbr disse:
Joaquim Tito disse:
Abraços....
Não alimente os tubarões...
Vc dá a mão, eles querem o braço
Vai ficar bacana Lucas!
Thiago Ananias disse:
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).