Ir para conteúdo

POWERED BY:

Arquivado

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

Vanilson

[Resolvido] Problemas com o option explicit

Recommended Posts

Pessoal, estou a tentar fazer uso do option explicit, so que ele me retorna um erro dissendo o seguinte:

 

Erro de compilação do Microsoft VBScript erro '800a0400'

 

Instrução esperada

 

/abertura_de_conta_bpc/Paginas/valida_login.asp, linha 11

 

Option Explicit

^

Aqui vai o codigo

<%	
Option Explicit

dim perfil, nome, senha, login, conexao

perfil = Request.Form("perfil") 
nome = Request.Form("txtnome")
senha = Request.Form("txtsenha")

Session("guardaperfil") = perfil
Session("guardanome") = nome

set conexao = Server.CreateObject("ADODB.Connection")
conexao.ConnectionString = ("driver=MySQL ODBC 5.1 Driver;database=gestao_clinica;sever=localhost;uid=root;password=vansoft;")
conexao.Open()

set login = Server.CreateObject("ADODB.Recordset")
login.Open "select *from usuarios where perfil_usuario='"+perfil+"' and nome_usuario='"+nome+"' and senha_usuario='"+senha+"'", conexao, 1, 3

if (not(login.EOF)) then
	if (perfil = "Administrador" or perfil = "Funçionario(a)")  then
		Response.Redirect("index.asp")
	end if
end if
Response.Redirect("erro_login.asp")

conexao.close

set perfil = nothing
set nome = nothing
set senha = nothing
set login = nothing
%>

Seu eu tirar o option explicit o código roda normalmente, agora com ele no código retorna esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao usar o option explicit, ele força a declarar todas as variaveis que são usadas na pagina, no erro ele já informa qual a linha onde está algo que não foi declarado.

 

Aqui:

login.Open "select *from usuarios where perfil_usuario='"+perfil+"' and nome_usuario='"+nome+"' and senha_usuario='"+senha+"'", conexao, 1, 3 

 

Pode ser a causa do seu erro. Tente assim:

login.Open "select * from usuarios where perfil_usuario='"&perfil&"' and nome_usuario='"&nome&"' and senha_usuario='"&senha&"'", conexao, 1, 3 

 

Sugiro declarar também as variaveis de Sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius fiz o que você disse mais o erro permanece, adicionei as variaveis de sessão no dim

dim perfil, nome, senha, login, conexao, guardaperfil, guardanome

e alterei tambem o sql

login.Open "select *from usuarios where perfil_usuario='"&perfil&"' and nome_usuario='"&nome&"' and senha_usuario='"&senha&"'", conexao, 1, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ConnectionString eu chamo apartir da variavel conexao, retifiquei o sql e ficou assim

 

<%	
Option Explicit

dim perfil, nome, senha, login, conexao, guardaperfil, guardanome

perfil = Request.Form("perfil") 
nome = Request.Form("txtnome")
senha = Request.Form("txtsenha")

Session("guardaperfil") = perfil
Session("guardanome") = nome

set conexao = Server.CreateObject("ADODB.Connection")
conexao.ConnectionString = ("driver=MySQL ODBC 5.1 Driver;database=gestao_clinica;sever=localhost;uid=root;password=vansoft;")
conexao.Open()

set login = Server.CreateObject("ADODB.Recordset")
login.Open "select * from usuarios where perfil_usuario='"&perfil&"' and nome_usuario='"&nome&"' and senha_usuario='"&senha&"'", conexao, 1, 3

if (not(login.EOF)) then
	if (perfil = "Administrador" or perfil = "Funçionario(a)")  then
		Response.Redirect("index.asp")
	end if
end if
Response.Redirect("erro_login.asp")

conexao.close

set perfil = nothing
set nome = nothing
set senha = nothing
set login = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, sugiro que faça separado a comparação de login e senha, fica um código mais seguro

 

<% Option Explicit
'declara as var
dim varsenha, varlogin, conexao ,rs, SQL, conDBQ, constring, rsselect, sqlselect, rsinsert, sqlinsert, rsupdate, sqlupdate,data
'recupera as var
varlogin=Trim(request.form("login"))
varsenha=Trim(request.form("senha"))
varlogin=Replace(varlogin,"'","")
varsenha=Replace(varsenha,"'","")
if varlogin="" then
response.redirect("logincli_form_treina.asp?msgeof=1")
end if
if varsenha="" then
response.redirect("logincli_form_treina.asp?msgeof=2")
end if
if Session("logado")=True then
response.redirect("logincli_form_treina.asp?msgeof=5")
end if 
%>
<!--#include file="conn/conexao1.asp"-->
<%
call abreconexao
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
if rs.eof then
   response.redirect("logincli_form_treina.asp?msgeof=3")
else
	if Lcase (varsenha) <> Lcase(rs("senha")) then
		response.redirect("logincli_form_treina.asp?msgeof=4")
		session("logado")=False
	else
		session("logado")=True
		session("senha")=varsenha
		session("login")=varlogin
		response.Redirect("administracao_treina.asp")
	end if
end if
set rs=nothing
call fechaconexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, problema resolvido coloquei o option explicit depois do language

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Option Explicit%>

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.