Sistema de Login Session

“http://www.w3.org/TR/html4/loose.dtd”>

<p><!–</p> <p>.Banner {</p> <p> border-top-width: 0px;</p> <p> border-right-width: 0px;</p> <p> border-bottom-width: 1px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p> font-family: verdana;</p> <p> font-size: 1px;</p> <p>}</p> <p>.BannerCenter {</p> <p> text-align: center;</p> <p>}</p> <p>.FundoLateralDireita {</p> <p> background-color: #e0e0e0;</p> <p> border-top-width: 0px;</p> <p> border-right-width: 1px;</p> <p> border-bottom-width: 0px;</p> <p> border-left-width: 1px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p>}</p> <p>.Botao {</p> <p> font-family: Verdana;</p> <p> font-size: 10px;</p> <p> background-color: #D0D0D0;</p> <p> color: #666666;</p> <p> border: 1px solid #666666;</p> <p>}</p> <p>.InputText {</p> <p> font-family: Verdana;</p> <p> font-size: 10px;</p> <p> color: #000000;</p> <p> border: 1px inset #adbdcc;</p> <p> background-color: #f7f8fa;</p> <p>}</p> <p>.BuscaInterna {</p> <p> font-family: Arial, Helvetica, sans-serif;</p> <p> font-size: 12px;</p> <p> font-weight: bold;</p> <p> color: #566E9C;</p> <p> text-align: center;</p> <p>}</p> <p>.FundoLateralEsquerdo {</p> <p> background-color: #e0e0e0;</p> <p> border-top-width: 0px;</p> <p> border-right-width: 1px;</p> <p> border-bottom-width: 0px;</p> <p> border-left-width: 1px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p>}</p> <p>.NewsLetter {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> font-weight: normal;</p> <p> color: #666666;</p> <p> padding-left: 5px;</p> <p>}</p> <p>.TxtNeg {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> font-weight: bold;</p> <p> color: #666666;</p> <p>}</p> <p>.TxtNegCenter {</p> <p> font-family: Verdana;</p> <p> font-size: 10px;</p> <p> font-weight: bold;</p> <p> color: #666666;</p> <p> text-align: center;</p> <p>}</p> <p>.LinhaFooter {</p> <p> border-top-width: 0px;</p> <p> border-right-width: 0px;</p> <p> border-bottom-width: 1px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p> font-family: verdana;</p> <p> font-size: 1px;</p> <p> background-color: #CCCCCC;</p> <p>}</p> <p>.Atualizacao {</p> <p> font-family: Verdana;</p> <p> font-size: 10px;</p> <p> font-weight: bold;</p> <p> color: #FF9900;</p> <p>}</p> <p>.BordaDireita {</p> <p> border-top-width: 5px;</p> <p> border-right-width: 1px;</p> <p> border-bottom-width: 5px;</p> <p> border-left-width: 1px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #FFFFFF;</p> <p> border-right-color: #C0C0C0;</p> <p> border-bottom-color: #FFFFFF;</p> <p> border-left-color: #FFFFFF;</p> <p>}</p> <p>.AlinhamentoEsquerdo {</p> <p> text-align: left;</p> <p> border-top-width: 5px;</p> <p> border-right-width: 1px;</p> <p> border-bottom-width: 5px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #FFFFFF;</p> <p> border-right-color: #FFFFFF;</p> <p> border-bottom-color: #FFFFFF;</p> <p> border-left-color: #FFFFFF;</p> <p>}</p> <p>.RodapeTabelas {</p> <p> border-top-width: 0px;</p> <p> border-right-width: 0px;</p> <p> border-bottom-width: 0px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p>}</p> <p>.TituloArtigo {</p> <p> font-family: Arial, Helvetica, sans-serif;</p> <p> font-size: 12px;</p> <p> font-weight: bold;</p> <p> color: #354460;</p> <p>}</p> <p>.TXT {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> font-weight: normal;</p> <p> color: #666666;</p> <p> text-align:justify;</p> <p>}</p> <p>.RodapeTabelas1 {</p> <p> border-top-width: 0px;</p> <p> border-right-width: 0px;</p> <p> border-bottom-width: 0px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #CCCCCC;</p> <p> border-right-color: #CCCCCC;</p> <p> border-bottom-color: #CCCCCC;</p> <p> border-left-color: #CCCCCC;</p> <p>}</p> <p>.TituloArtigo1 {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> font-weight: bold;</p> <p> color: #003399;</p> <p> padding-left: 5px;</p> <p>}</p> <p>.LinhaArtigos {</p> <p> border-top-width: 1px;</p> <p> border-right-width: 0px;</p> <p> border-bottom-width: 0px;</p> <p> border-left-width: 0px;</p> <p> border-top-style: solid;</p> <p> border-right-style: solid;</p> <p> border-bottom-style: solid;</p> <p> border-left-style: solid;</p> <p> border-top-color: #FF9900;</p> <p> border-right-color: #FF9900;</p> <p> border-bottom-color: #FF9900;</p> <p> border-left-color: #FF9900;</p> <p>}</p> <p>.Titulos {</p> <p> font-family: Arial, Helvetica, sans-serif;</p> <p> font-size: 14px;</p> <p> text-transform: uppercase;</p> <p> color: #566E9C;</p> <p> border-bottom-width: 1px;</p> <p> border-bottom-style: solid;</p> <p> border-bottom-color: #566E9C;</p> <p> border-left-style: solid;</p> <p> border-left-color: #566E9C;</p> <p> font-weight: bold;</p> <p> vertical-align: middle;</p> <p> padding-left: 5px;</p> <p> border-left-width: 3px;</p> <p> height: 20px;</p> <p>}</p> <p>.TitulosSub {</p> <p> font-family: Verdana, Arial, Helvetica, sans-serif;</p> <p> font-size: 10px;</p> <p> text-transform: uppercase;</p> <p> color: #666666;</p> <p> border-bottom-width: 1px;</p> <p> border-bottom-style: solid;</p> <p> border-bottom-color: #566E9C;</p> <p> border-left-style: solid;</p> <p> border-left-color: #566E9C;</p> <p> font-weight: bold;</p> <p> vertical-align: middle;</p> <p> padding-left: 5px;</p> <p> border-left-width: 7px;</p> <p> height: 20px;</p> <p> border-right-width: 5px;</p> <p> border-right-style: solid;</p> <p> border-right-color: #FFFFFF;</p> <p>}</p> <p>.numerodacoluna { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color:#3366CC}</p> <p>.titulodamateria { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 13px; color:#000000; font-weight:bolder}</p> <p>.texto { font-family: Verdana, Arial, sans-serif; font-size: 10px; color: #666666}</p> <p>.textodiferente { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; color:#6699CC}</p> <p>.TabelaListaConteudo {</p> <p> background-color: #F7f8fa;</p> <p> border: 1px solid #adbdcc;</p> <p>}</p> <p>.TxtNegAlgDir {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> font-weight: bold;</p> <p> color: #666666;</p> <p> text-align: right;</p> <p>}</p> <p>.estilofonte { </p> <p> font-family: Verdana, Arial, Helvetica, sans-serif; </p> <p> color: #849CB3; </p> <p> font-size: 11px; </p> <p>} </p> <p>TABLE {</p> <p> FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: 14px; FONT-STYLE: normal; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif</p> <p>}</p> <p>.title {</p> <p> FONT-SIZE: 24px; COLOR: #5b7a99; LINE-HEIGHT: 28px</p> <p>}</p> <p>.subtitle {</p> <p> FONT-SIZE: 18px; COLOR: #666666; LINE-HEIGHT: 21px</p> <p>}</p> <p>.titleHighlight {</p> <p> FONT-WEIGHT: bold; COLOR: #5b7a99</p> <p>}</p> <p>.subtitleHighlight {</p> <p> COLOR: #5b7a99</p> <p>}</p> <p>LABEL {</p> <p> FONT-SIZE: 11px; COLOR: #333333; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif</p> <p>}</p> <p>.labelTitle {</p> <p> FONT-WEIGHT: bold</p> <p>}</p> <p>BODY {</p> <p> BACKGROUND-POSITION: left top; </p> <p> SCROLLBAR-FACE-COLOR: #adbdcc; </p> <p> SCROLLBAR-SHADOW-COLOR: #6c88a3; </p> <p> SCROLLBAR-3DLIGHT-COLOR: #6c88a3; </p> <p> SCROLLBAR-ARROW-COLOR: #5b7a99; </p> <p> SCROLLBAR-TRACK-COLOR: #d7dee6; </p> <p> BACKGROUND-REPEAT: repeat-y; </p> <p> SCROLLBAR-DARKSHADOW-COLOR: #c1d1e0; </p> <p> SCROLLBAR-BASE-COLOR: #adbdcc; </p> <p> BACKGROUND-COLOR: #ffffff</p> <p>}</p> <p>}</p> <p>.inputRadioButton {</p> <p> BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px; TEXT-ALIGN: center</p> <p>}</p> <p>.cheqbox {</p> <p> BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; BORDER-LEFT: 0px solid; BORDER-BOTTOM: 0px solid</p> <p>}</p> <p>.linkTop {</p> <p> COLOR: #5b7a99; TEXT-DECORATION: none</p> <p>}</p> <p>.linkTop:hover {</p> <p> COLOR: #304b6b; TEXT-DECORATION: none</p> <p>}</p> <p>.linkHighlight:hover {</p> <p> COLOR: #b92088; TEXT-DECORATION: none</p> <p>}</p> <p>.linkMenu {</p> <p> COLOR: #5b7a99; TEXT-DECORATION: none</p> <p>}</p> <p>.linkMenu:hover {</p> <p> COLOR: #849CB3; TEXT-DECORATION: none</p> <p>}</p> <p>.linkText {</p> <p> COLOR: #5b7a99; TEXT-DECORATION: none</p> <p>}</p> <p>.linkText:hover {</p> <p> COLOR: #b92088; TEXT-DECORATION: none</p> <p>}</p> <p>.linkTrack {</p> <p> COLOR: #666666; TEXT-DECORATION: none</p> <p>}</p> <p>.linkTrack:hover {</p> <p> COLOR: #b92088; TEXT-DECORATION: none</p> <p>}</p> <p>a:link {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> color: #5b7a99;</p> <p> text-decoration: none;</p> <p>}</p> <p>a:visited {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> color: #5b7a99;</p> <p> text-decoration: none;</p> <p>}</p> <p>a:hover {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> color: #5b7a99;</p> <p> text-decoration: none;</p> <p>}</p> <p>a:active {</p> <p> font-family: Verdana;</p> <p> font-size: 11px;</p> <p> color: #5b7a99;</p> <p> text-decoration: none;</p> <p>}</p> <p>.rodape {</p> <p> font-family: Verdana, Arial, Helvetica, sans-serif;</p> <p> font-size: 9px;</p> <p> color: #666666;</p> <p> text-decoration: none;</p> <p>}</p> <p>.style7 {font-family: Verdana, Arial, sans-serif; font-size: 10px; color: #666666; font-style: italic; }</p> <p>.style8 {color: #0000FF}</p> <p>.style11 {color: #CC9900}</p> <p>–></p>

E ae pessoal firmeza? Aki tah td a pampa, só ouvindo uma barulheira e tomando uma cerva geladona!

Nesta coluna abordarei novamente sistema de login, só que agora não serão utilizadas as tags do CFMX, e sim um sistema que funciona com variáveis de sessão(session).

SISTEMA DE LOGIN COM VARIÁVEIS DE SESSÃO

Arquivos a serem utilizados: index.cfm, login.cfm, act_Login.cfm, logout.cfm, Application.cfm, banco.mdb

Banco de dados

O banco de dados é o mesmo que foi utilizado na outra coluna de sistema de login, então creio que não há a necessidade de descrevê-lo novamente.

Não se esqueçam de configurar o database no

Coldfusion Administrator com o nome de banco.

PÁginas

Application.cfm (Maiúsculo, pois se estiver rodando em linux e estiver com a minúsculo, vai dar erro!)

O Application.cfm é um arquivo que guardará informações utilizadas em todas as páginas da nossa aplicação. Por exemplo, em uma aplicação dinâmica o banco de dados é utilizado em quase ou em todas as páginas. E aqui vamos colocar todas as funções que serão utilizadas em toda nossa aplicação

Código Application.cfm

<cfapplication name=”login” sessionmanagement=”yes” sessiontimeout=”#CreateTimeSpan(0,0,20,0)#”>

<cfset request.DSN=”banco”>

Com a tag <cfapplication> eu dei o nome para a aplicação de login, habilitei o uso de sessions com o atributo sessionmanagement e dei um tempo de 20 minutos para a session expirar caso fique inativa com o atributo sessiontimeout e a função CreateTimeSpan().

Dentro do CreateTimeSpan() existem quatro números separados por vírgula, da esquerda para a direita os números representam dia, hora, minuto e segundo. Então a sessão nesse caso expirará em 20 minutos.

Sempre declare o nome do banco de dados no Application. É uma maneira de poupar tempo futuramente, caso haja a mudança do nome da base de dados.

login.cfm

Página inicial da nossa aplicação onde os dados a serem logados devem ser inseridos.

Código login.cfm

<cfform action=”index.cfm” method=”post”>

Usuário: <cfinput type=”text” name=”usuario” required=”yes” message=”Campo usuário está em branco.”><br>

Senha: <cfinput type=”password” name=”senha” required=”yes” message=”Campo senha está em branco.”><br>

<input type=”submit” value=”Logar!!!”>

</form>

<cfform> – Esta é uma tag que indica o uso de formulários, semelhante à tag <form> do html. Possui alguns atributos a mais.

<cfinput> – Semelhante ao <input> do html, porém suporta somente os campos de type text, password, checkbox e radio.

Dentro dela já podemos fazer uma validação de campo em branco definindo required como yes e escrevendo a mensagem que aparecerá no alert em message.

Porém se você quiser fazer alguma coisa com javascript dentro delas, como utilizar um onFocus(), onClick(), entre outras, utilize as tags comuns do html(<form> e <input>).

Visual login.cfm

act_Login.cfm

É esse arquivo que verificará se os dados passados pelo form são válidos e qual o tipo de permissão do usuário logado.

Código act_Login.cfm

<cfif IsDefined(trim(“form.logusuario”)) AND IsDefined(trim(“form.logsenha”))>

<cfquery name=”qBuscaUsuario” datasource=”#request.DSN#”>

SELECT

usuario, senha, permissao FROM Usuarios

WHERE

usuario =<cfqueryparam cfsqltype=”cf_sql_varchar” value=”#form.logusuario#”>

AND

senha =<cfqueryparam cfsqltype=”cf_sql_varchar”value=”#form.logsenha#”>

</cfquery>

<cfif qBuscaUsuario.Recordcount>

<cflock scope=”session” type=”exclusive” timeout=”5″>

<cfset session.usuario=’#form.logusuario#’>

<cfset session.permissao= qBuscaUsuario.permissao>

</cflock>

<cflocation url=”index.cfm”>

<cfelse>

<script language=”javascript”>

alert(‘Usuário ou senha inválidos’)

location.href=”login.cfm”

</script>

</cfif>

<cfelse>

<cflocation url=”login.cfm”>

<cfabort>

</cfif>

CÓdigo cinza

Fazendo um tratamento condicional (<cfif>), se os valores form.logusuario e form.logsenha estiverem definidos ele executará a <cfquery>, caso contrário (<cfelse>) o usuário será redirecionado para a página login.cfm (<cflocation>) e o processo será interrompido naquele ponto (<cfabort>). A função trim() é utilizada para remover os espaços da esquerda e da direita das strings.

CÓdigo azul

O código em azul depende da <cfquery> para ser executado. Se a query qBuscaUsuario retornar algum resultado(<cfif qBuscaUsuario.RecordCount> ) ele irá executar o travamento da sessão e o redirecionamento para a página index.cfm, caso contrário(<cfelse>) irá executar o código javascript e redirecionar o usuario para a página de login (location.href=”login.cfm”). A tag <cflock> é utilizada para travar determinado tipo de ação pelos escopos suportados para não causar problemas no servidor CF se outros usuários estiverem fazendo a mesma coisa ao mesmo tempo. Nesse caso a sessão foi mantida exclusiva e com um tempo de expiração de 5 segundos. Após estes 5 segundos, esta session estará liberada para que outro processamento seja feito.

O nome de usuário que foi passado pelo formulário foi armazenado na variável de sessão usuario (session.usuario) e a permissão do usuario que veio da query qBuscaUsuario foi armazenada na variável de sessão permissao (session.permissao) e automaticamente o redirecionamento do usuário para a página de controle (<cflocation url=”index.cfm”>).

index.cfm

Nela que o usuário após ser logado, será redirecionado e ver o que está permitido ou proibido ele fazer na página.

Código index.cfm

Você está logado no momento.<br><br>

<cfif session.permissao EQ “administrador”>

A sua permissão atual <b><cfoutput>#session.usuario#</cfoutput></b> é de administrador. Aqui você pode inserir, modificar e ler dados.<br><br>

<b><i>Só quem está logado como administrador pode ver essa mensagem em itálico e negrito.</i></b>

<cfelse>

A sua permissão atual <b><cfoutput>#session.usuario#()#</cfoutput></b> é de usuário. Aqui você pode ler dados somente.

</cfif>

<br><br>

<a href=”logout.cfm”>Logout</a>

O tratamento condicional diz que se a variável session.permissão for igual (EQ) a administrador, o bloco azul é mostrado caso contrário é mostrado o bloco laranja.

logout.cfm

Esta é a página final do nosso sistema que efetua o logout do usuário e o leva devolta para a página de login.

Código logout.cfm

<cfset StructClear(session)>

<cflocation url=”login.cfm”>

A função StructClear() serve para limpar a estrutura definida entre os parênteses. Neste caso ele limpará a estrutura session, então as duas variáveis que foram armazenadas na session, sumirão. E após isso ocorrer o usuário será redirecionado para a página de login.

Bom pessoal esse é o fim do nosso sistema de login. Na próxima coluna, sei lá o que eu vou postar, o jeito é esperar!!! :)

Espero que vocês tenham gostado e que eu tenha explicado bem.

Dúvidas, sugestões, reclamações contate o SAC pelo link no fim da página ou postem no fórum. Terei prazer em atendê-los.

Som da matéria

Banda: METALLICA

Música: SEEK AND DESTROY

Dúvidas.

Escrito por Ianraphael on abril 25, 2004. Arquivado em Coldfusion. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

1 resposta a Sistema de Login Session

  1. Muito legal essa matéria!

    Cara, eu estudava PHP. Minha vontade de aprender ColdFusion me fez compará-lo com o PHP. Aí me surgiu uma dúvida: No PHP, eu posso criar banco de dados, tabelas, etc. No ColdFusion também posso criar uma banco de dados com alguma função específica do CF?

    Espero que tenha entendido minha dúvida e que possa me responder. Obrigado

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>