A sua loja virtual - Identificando o cliente


Na primeira vez que um usuário acessa o site ele deverá fazer o seu cadastramento informando os dados básicos para confecção do cadastro  para que possa efetuar as suas compras. Feito o cadastramento , toda vez que o usuário acessar o site ele deverá se identificar usando o e-mail e a senha cadastradas. 

 

Para criar uma loja virtual usando ASP .NET acompanhe o curso no link : 

ASP .NET - Criando um site completo com carrinho de compras (Curso)

 

A cada acesso de um usuário ao site da Loja Virtual , ele recebe um código de identificação que durará durante a sessão , ou seja , enquanto ele estiver no site o código atribuído o identificará na sessão , somente expirando quando sua sessão encerrar. 

O código de identificação atribuído a qualquer usuário que acessar o site inicialmente é  igual a zero ( ClienteID = 0 ) , com isto ele será obrigado se identificar antes de prosseguir e realizar suas compras. Se durante a identificação for constatado que ele já esta cadastrado , o seu código de usuário lhe será atribuído . Caso se tratar de um usuário sem cadastro ele deverá se cadastrar para receber uma identificação válida de código de usuário. A tela para identificação  é gerada pelo arquivo identifica.asp , e é exibida a seguir:

Esta página é composta por um formulário onde temos duas caixas de texto onde o usuário deverá informar o seu e-mail e sua senha. O sistema irá então verificar no banco de dados de clientes cadastrados se já existe o e-mail e a senha cadastrados. 

Para criar a estrutura desta página usando o Frontpage siga os passos:

  1. Abra o FrontPage e após informar o nome da loja (JcmSoft - A sua Loja Virtual) , clique na opção Inserir -> Formulário -> Caixa de texto de uma linha 
  2. Exclua um dos botões de comando incluídos e altere o nome de identificação do botão que restou  para OK teclando ENTER em seguida.
  3.  Insira outra caixa de texto acima da primeira usando a mesma opção anterior e informe o texto de identificação de cada caixa de texto a esquerda das mesmas. 

O código do arquivo identifica.asp é dado a seguir:

<%@ Language=VBScript %>
<%
Option Explicit
'Verifica se é nova identificação
if ( Ucase(Request.QueryString("Tipo")) = "NOVO" ) Then
  Session("Id_Erro") = 0
  Session("Id_Email") = ""
  Session("Id_Nome") = ""
end if 
%>
<!-- #Include file="ADOVBS.INC" -->
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<title>A sua Loja de Software Virtual</title>
</head>

<body bgcolor="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<script language="JavaScript"> 
<!--
// Verifica se campos foram preenchidos
function submit_page(form) {

if(EmBranco(form.frm_email) == true) {
  alert("Informe o seu e-mail corretamente.");
  form.frm_email.focus();
  return false;
}

if(EmBranco(form.frm_senha) == true) {
  alert("Por favor informe a Senha.");
  form.frm_senha.focus();
  return false;
}
} // fim da função

// Verifica se campo foi preenchido
function EmBranco(campo) {
if(campo.value == "")
  return true;
else
 return false;
}
--></script>

<table border="0" width="667">
<tr>
<TD bgcolor="#FFFFFF" width="624">
<p align="center"><b><font color="#008080" size="5" face="Verdana">JcmSoft
- A sua Loja Virtual</font></b>
</TD>
</tr>
<tr>
<TD align=middle bgColor=#008080 width="624">
<p align="center"><B><FONT color=#FFFFFF 
face=arial size=-2>Copyright JcmSoft. Todos os direitos reservados</FONT></B></p>
</TD>
</tr>
<tr>
<td width="659"><b><font face="Verdana" size="2" color="#008080">Login</font></b>
<%if Session("Id_Erro") <> 0 then
response.write "<font face=Verdana size=2 color=blue>" & " = Usuário não cadastrado/Senha não confere. Utilize opção para cadastramento.(Novo)" & "</font>"
end if%> 
<hr color="#008080">
</td>
</tr>
</table>

<table border="0" width="667" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#FFFFFF" width="659">
<form action="verifica.asp" method="POST" name="identifica" onsubmit="return submit_page(this);">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="32%"><font color="#008080"><b><font face="Verdana" size="2">Informe o seu
e-mail</font></b></font></td>
<td width="68%"><input type="text" size="46" name="frm_email"
value="<%=Request.Cookies("cookie_EMail")%>"></td>
</tr>
<tr>
<td width="32%"><font color="#008080"><b><font face="Verdana" size="2">Informe a sua senha</font></b>&nbsp;&nbsp;
</font></td>
<td width="68%"><input type="password" size="10" name="frm_senha"><input type="submit" name="B1" value="OK" style="font-family: Verdana; color: #000000; font-size: 8 pt">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" width="659">
<hr color="#008080">
</td>
</tr>
</table>

<table border="0" width="668" bgcolor="#FFFFFF">
<tr>
<td width="214" bgcolor="#008080" height="30" valign="top">
<p align="center"><font color="#000000" size="2" face="Verdana">&nbsp;<strong><a href="http://macorati/loja/index.htm">Retorna</a></strong></font></p>
</td>
<td width="285" valign="top" bgcolor="#008080">&nbsp;
</td>
<td width="149" valign="top" bgcolor="#008080"><p align="center"><font color="#FFFFFF" size="2" face="Verdana"><strong><a href="http://macorati/loja/cadastra.asp?Tipo=NOVO">Novo</a></strong></font></p>
</td>
</tr>
</table>
<script language="JavaScript">
<!--
// Coloca foco no primeiro campo do formulário
document.identifica.frm_email.focus();
// -->
</script>
</body>
</html>

1-) Primeiro verificamos se devemos realizar um cadastramento novo , checando o parâmetro Tipo. Ele é passado com a opção NOVO quando o usuário clicar no botão Novo . Se o usuário é um novo usuário então iniciamos as variáveis de sessão Id_erro , Id_Email e Id_Nome com os valores padrão.

if ( Ucase(Request.QueryString("Tipo")) = "NOVO" ) Then
  Session("Id_Erro") = 0 
  Session("Id_Email") = ""
  Session("Id_Nome") = ""
end if 

Ao informar um e-mail válido e uma senha o usuário deverá clicar no botão OK . 

2-) A seguir temos as funções escritas na linguagem JavaScript que irão fazer a validação dos dados informados no formulário de Login.

<script language="JavaScript"> 
<!--
// Verifica se campos foram preenchidos
function submit_page(form) {

if(EmBranco(form.frm_email) == true) {
  alert("Informe o seu e-mail corretamente.");
  form.frm_email.focus();
  return false;
}

if(EmBranco(form.frm_senha) == true) {
  alert("Por favor informe a Senha.");
  form.frm_senha.focus();
  return false;
}
} // fim da função

// Verifica se campo foi preenchido
function EmBranco(campo) {
if(campo.value == "")
  return true;
else
 return false;
}
--></script>
Funcões em JavaScript para validação dos dados

3-) Verificamos o conteúdo da variável Id_Erro, e , se o seu conteúdo for diferente de zero , significa que ocorreu um erro durante a verificação dos dados informados no formulário de Login. Exibimos uma mensagem informando ao usuário a causa do erro. Como na figura abaixo:

<%if Session("Id_Erro") <> 0 then
response.write "<font face=Verdana size=2 color=blue>" & " = Usuário não cadastrado/Senha não confere. Utilize opção para cadastramento.(Novo)" & "</font>"
end if%> 
Mensagem de advertência ao usuário

4-) O formulário de Login exibido tem o seguinte código:

<form action="verifica.asp" method="POST" name="identifica" onsubmit="return submit_page(this);">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="32%"><font color="#008080"><b><font face="Verdana" size="2">Informe o seu
e-mail</font></b></font></td>
<td width="68%"><input type="text" size="46" name="frm_email"
value="<%=Request.Cookies("cookie_EMail")%>"></td>
</tr>
<tr>
<td width="32%"><font color="#008080"><b><font face="Verdana" size="2">Informe a sua senha</font></b>&nbsp;&nbsp;
</font></td>
<td width="68%"><input type="password" size="10" name="frm_senha"><input type="submit" name="B1" value="OK" style="font-family: Verdana; color: #000000; font-size: 8 pt">
</td>
</tr>

</form>
</table>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" width="659">
<hr color="#008080">
</td>
</tr>
</table>

Os formulários são muito usados para coletar informações , e , geralmente são compostos das seguintes partes:

A tag <form></form> delimitam o trecho que conterá os elementos que compõem o formulário. A tag <form></form> exige dois atributos que devem ser informados :

No nosso exemplo temos a seguinte linha declarando o formulário:

<form action="verifica.asp" method="POST" name="identifica" onsubmit="return submit_page(this);">

onde:

As linhas de código a seguir definem os campos e o botão de envio do formulário:

Define o campo para informar o nome do usuário. Perceba que atribuímos um valor padrão ao campo. Este valor é um cookie que foi criado anteriormente contendo o e-mail do usuário. 

Define o campo para o usuário informar a senha do usuário. O 

Define o botão para envio do formulário ao servidor. Ao ser pressionado é feita a checagem da informação entrada pelo usuário e se tudo estiver correto o arquivo verifica.asp é executado. 

O código do arquivo verifica.asp é o seguinte:

<%
Option Explicit

'Declaração das Variáveis 
Dim conntemp

'--------------------------------------
'Abre conexão com o banco de dados
'--------------------------------------

Sub Abre_Conexao
  Set conntemp = Server.CreateObject("ADODB.Connection") 
  conntemp.Open Application("Conecta_bd")
End Sub

'--------------------------------------
'Fecha conexão com o banco de dados
'--------------------------------------

Sub Fecha_Conexao
  conntemp.Close 
  Set conntemp = Nothing
End Sub

Dim rsClientes
Dim SQL

'Inicializa variaveis de sessao
Session("Id_Erro")=0
Session("Id_Email") = ""
Session("Id_Nome") = ""

'se encerrar a sessão redireciona para a página principal
If ( Ucase(Request.QueryString("operacao")) = "ENCERRASESSAO" ) Then
  Session.Abandon
  Session("ClienteID")=0
  Response.Redirect "/loja/index.asp"
End If

'--------------------------------------
'processamento geral
'--------------------------------------
'Abre conexão c/o banco de dados

Abre_Conexao

'Monta instrução SQL
SQL = "SELECT ClienteID, ClienteNome"
SQL = SQL & " FROM Clientes"
SQL = SQL & " WHERE ClienteEMail='" & Request.Form("frm_email") & "'"
SQL = SQL & " AND ClienteSenha='" & Request.Form("frm_senha") & "'"

'Abre o Recordset de Clientes para o e-mail informado
Set rsClientes = conntemp.Execute (SQL)

'se nao encontrou retorna erro, fechando o recordset e a conexão
If rsClientes.EOF Then
  session("Id_Erro")=1
  rsClientes.Close 
  Set rsClientes = Nothing
  Fecha_Conexao
  Response.Redirect "/loja/identifica.asp"
Else
  'identifica cliente 
  Session("ClienteID") = rsClientes("ClienteID")
  Session("ClienteNome") = rsClientes("ClienteNome")

  'cria cookie p/ o cliente e define data em que expira
 
Response.Cookies("cookie_EMail") = Request.Form("frm_email")
  Response.Cookies("cookie_EMail").Expires = DateAdd("m", 2, Date())

  'fecha recordset e conexao e redireciona para pagina de compras
  rsClientes.Close 
  Set rsClientes = Nothing
  Fecha_Conexao
  Response.Redirect "/loja/comprar.asp"
End If

%>
<!-- #Include file="ADOVBS.INC" -->

Ele tem a função de verificar se o e-mail e a senha informados já estão cadastrados no banco de dados do sistema. Isto é feito através da  seguinte instrução SQL:

Monta instrução SQL
SQL = "SELECT ClienteID, ClienteNome"
SQL = SQL & " FROM Clientes"
SQL = SQL & " WHERE ClienteEMail='" & Request.Form("frm_email") & "'"
SQL = SQL & " AND ClienteSenha='" & Request.Form("frm_senha") & "'"

'Abre o Recordset de Clientes para o e-mail informado
Set rsClientes = conntemp.Execute (SQL)

Onde o e-mail e a senha são recuperados através do objeto Request da ASP. O recordset ( conjunto de registros) rsclientes é criado através do método Execute.

Podemos ter duas possibilidades:

1-) O cliente já esta cadastrado -  Então ele é identificado , criamos um cookie para conter o seu e-mail e redirecionamos o usuário para página de compras.( Response.Redirect "/loja/comprar.asp" )

2-) O cliente não esta cadastrado - Iniciamos a variável que indica que houve um erro ( Id_erro) e redirecionamos o usuário para a página de identificação. (Response.Redirect "/loja/identifica.asp" )

If rsClientes.EOF Then

  'cliente não cadastrado
  session("Id_Erro")=1
  rsClientes.Close 
  Set rsClientes = Nothing
  Fecha_Conexao
  Response.Redirect "/loja/identifica.asp"
Else
  'identifica cliente ( cliente já cadastrado)
  Session("ClienteID") = rsClientes("ClienteID")
  Session("ClienteNome") = rsClientes("ClienteNome")

  'cria cookie p/ o cliente e define data em que expira
 
Response.Cookies("cookie_EMail") = Request.Form("frm_email")
  Response.Cookies("cookie_EMail").Expires = DateAdd("m", 2, Date())

  'fecha recordset e conexao e redireciona para pagina de compras
  rsClientes.Close 
  Set rsClientes = Nothing
  Fecha_Conexao
  Response.Redirect "/loja/comprar.asp"
End If

 

Finalmente criamos o link-  Retorna -  para que o usuário possa retornar para página principal e o link - Novo -  para que ele acione o arquivo cadastra.asp e realize o seu cadastramento.

 Parte Anterior Próxima parte

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti