Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Ajuda Com Select Case


Fabiano Furquim

Pergunta

Bom Dia a todos

Criei um sistema de login onde são verificados varios paramentros para q o usuário possa acessar o conteúdo exclusovo.

Bom até ai tudo bem consegui, ele verifica td certinho, então pensei em usar um select case para redirecionar o usuário deiratamente para sua àrea dependo do seu cadastro, fiz o select e ele não direciona para a pagina.

Abaixo Segue código utilizado.:

<%
Dim user, pass, pag, stt
stt = "A"
pag = "1"
user = Request.Form("user")
pass = Request.Form("pass")
Dim conObj
Set conObj = Server.CreateObject("ADODB.Connection")
conObj.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("charged.mdb") & ";"

Dim sql, modu
sql = "SELECT * FROM users WHERE user='" & user & "' AND pass='" & pass & "' AND situacao='"& stt &"' AND pag='" & pag &"'"
modu = "SELECT curso FROM users WHERE user='" & user & "' AND pass='" & pass & "' AND situacao='"& stt &"' AND pag='" & pag &"'"
' O código acima verifica se exite o usuario e a senha e se a situação e o pagamento estão em dia
Dim rs
Set rs = conObj.Execute(sql)
If rs.EOF Then
login = false
Else
login = true
End If 'Se todas as condições forem obdecidas então o usuário sera logado e direcionado para pag
If login = true Then
Session("nxhvezzduzyslpkadmzlhnvozyoudgcuisj") = true
Session("dynamicUserId") = Session.SessionID
    Select Case modu
        case "adm" 'Administrador Site
            Response.Redirect("..\authent\admin.asp")
        case "mec" 'Mecânica    
            Response.Redirect("..\authent\mecanica.asp")
        case "mct" 'Mecatrônica
            Response.Redirect("..\authent\mecatronica.asp")
        case "ele" 'Eltrônica
            Response.Redirect("..\authent\eletronica.asp")
        case "inf" 'Informática
            Response.Redirect("..\authent\informatica.asp")
        case "pro" 'Professores
            Response.Redirect("..\authent\professores.asp")
        case else 'Secretaria
            Response.Redirect("..\authent\secretaria.asp")
    End Select
Else
Response.redirect("erro.asp")
End If
%>

Será q alguém poderia dar uma opinião sobre o q estou fazendo de errado, pois não consegui enchergar o erro...

Desde já agradeço pela atenção de todos

Fabiano Furquim

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest Ajudando por gostar de ajudar

Olá Fabiano Furquim.

Sua case não está funcionando por que não está claro o critério utilizado, em seu caso só foi nomeado fixamente o nome da case, anulando toda e qualquer referência a verificação do usuário.

Dou-lhe um exemplo:

Ex.1

Select Case modu

case "adm" 'Administrador Site

Response.Redirect("..\authent\admin.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case else 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

End Select

Ex.2

Select Case (Critério, por exemplo usa session)

case "adm" 'Administrador Site

Response.Redirect("..\authent\admin.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case else 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

End Select

No exemplo 1 sua case está procurando uma string que seja equivalente a modu, ela não existe em sua case, e sim como nome de referência, um erro onde você acreditou que é simplesmente que seria o nome da case em si.Este foi seu erro.

No exemplo 2 temos a forma correta de usar case em seu caso, você está classificando por tipo de usuário, desta forma você deveria classificar a ordem da case como tal, isto foi feito corretamente, porem você errou em informar qual fonte de dados seria, por não conhecer está técnica você acreditou que houvesse um simples nome para referência (modu) poderia fazer a verificação partindo de uma string SQL, não funciona assim, você deve ter este dado e coloca-lo em uma session ou diretamente (NomeSQL(campo)), desta forma você teria sua avaliação e redirecionamento de forma correta. Dou-lhe um exemplo de como ficaria nas duas formas:

Forma com session:

Select Case (Session("dynamicUserId"))

case "adm" 'Administrador Site

Response.Redirect("..\authent\admin.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case else 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

End Select

Forma com SQL string:

Select Case (SQLSetNome("Campo_da_tabela"))

case "adm" 'Administrador Site

Response.Redirect("..\authent\admin.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case else 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

End Select

Espero ter ajudado você, boa sorte, gostaria de dar um conselho para você sobre programação; o grande segredo não é inventar e sim criar novas idéias conhecendo profundamente a tecnologia, desta forma você irá criar novos scripts para suas aplicações que serão exclusivos para seus trabalhos. Uma forma inteligente de aumentar sua renda, força ai, saber não é uma questão de estudar horas e sim de aproveitar as horas da melhor forma possível e produtivamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Não posso simplesmente igualar a variavél Modu ao q sera retornado de um select para depois usar o Select Case?

Vou exemplificar

dim curso

curso = "select curso from users Where user='" & user &"' AND pass='" & pass &"' AND pag='"pago"'"

onde as variavéis User e pass são fornecidas na hora do login e a variável pag tem de ser a mesma sempre ou seja só tera acesso quem esta com o pagamento em dia, para depois eu veirficar qual seria a pagina apropriada para o usuário??

Editado por Fabiano Furquim
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Ajudando por gostar de ajudar

Não Fabiano.

O que você quer fazer é após está avaliação, ou seja, você cria uma string SQL que verifica todas estas informações, avaliando como validas ou não, em casos de validas você deve criar uma informação genérica de indique todos os critérios de avaliação feita pela string SQL, dou-lhe um exemplo:

Sua referência em sua case é o tipo de usuário:

Adm(Administrador Site), mec(Mecânica), mct(Mecatrônica), ele(Eltrônica), inf(Informática), pro(Professores), case else(Secretaria)

Neste caso você deve criar estas informações a partir do resultado se sua string SQL, caso todos os critérios de sua string SQL forem aprovados na avaliação, você dever criar uma session com a informação de tipo de usuário de acordo com a ordem de critério acima, exemplo após a avaliação de sua string SQL aprovando o acesso:

O usuário é um administrador do site, neste caso a case dele é “Adm” você deve criar um campo no banco de dados indicando o tipo de usuário desta forma; campo nome “tipo_de_usuario” dado “Adm”. Desta forma você tem uma informação fixa relacionada ao usuário em caso.

Sua session:

Ela seria desta forma, Session(“Tipo_usuario”) = conObj(“tipo_de_usuario”)

A chamada seria desta forma em sua case:

Select Case (Session(“Tipo_usuario”))

case "adm" 'Administrador Site

Response.Redirect("..\authent\admin.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case else 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

End Select

Sendo que o valor da case é “adm” e este critério existe em sua case, redirecionando para a url indicada.

Na verdade Fabiano case é uma espécie de porteiro eletrônico, ele não é solicitado pelo nome e sim por uma informação, ao informar que você é um usuário do tipo administrador (adm) ele pega está informação e ira procurar em qual case se pode encontrar a ocorrência caso encontre ela é executada, caso não encontre a case else será executada.

Sem uma informação de entrada é praticamente impossível executar os critérios das cases.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá.

Estou com um outro problema q acho agora ser mais simlpe de resolver... Fiz o q você me disse, consegui recuperar o conteúdo do bco de dados porem o select não esta redirecionando corretamente para a pagina q deveria ir..

já fiz um response.write e o conteúdo da Session esta de acordo com o q esta no bco....

Será q mais uma vez você poderia me ajudar?

Abaixo segue meu cod completo.:

<%

Dim user, pass, pag, stt

stt = "A"

pag = "1"

user = Request.Form("user")

pass = Request.Form("pass")

Dim conObj

Set conObj = Server.CreateObject("ADODB.Connection")

conObj.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("charged.mdb") & ";"

'Session("Tipo_usuario") = conObj("curso")

Dim sql, modu, sem, cur

sql = "SELECT * FROM users WHERE user='" & user & "' AND pass='" & pass & "' AND situacao='"& stt &"' AND pag='" & pag &"'"

' O código acima verifica se exite o usuario e a senha e se a situação e o pagamento estão em dia

sem = "SELECT sem FROM users WHERE user='" & user & "' AND pass='" & pass & "' AND situacao='"& stt &"' AND pag='" & pag &"'"

'Captura o Semestre do usuario e senha digitados acima somente se estiver em dia com os pagamentos

modu = "SELECT modu FROM users WHERE user='" & user & "' AND pass='" & pass & "' AND situacao='"& stt &"' AND pag='" & pag &"'"

'Captura o Módulo do usuario e senha digitados acima somente se estiver em dia com os pagamentos

cur = "SELECT curso FROM users WHERE user='" & user & "' AND pass='" & pass & "'"

'Captura o curso do usuario e senha digitados digitados

Session("semestre") = sem 'Cria sessão semestre para testar em outra pagina

Session("Modulo") = modu 'Cria sessão Módulo para testar em outra pagina

Session("cur")= cur

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim ResPes 'Pega a informação no bco de dados

set ResPes = conObj.Execute(cur)

Session("tipo_usuario")=ResPes("curso")

'==================================================================================================

Dim rs

Set rs = conObj.Execute(sql)

If rs.EOF Then

login = false

Else

login = true

End If 'Se todas as condições forem obdecidas então o usuário sera logado e direcionado para pag

If login = true Then

Session("log") = true

Session("dynamiclog") = Session.SessionID

Select Case (Session("Tipo_Usuario"))

case "adm" 'Administrador Site

Response.Redirect("..\authent\online.asp")

case "mec" 'Mecânica

Response.Redirect("..\authent\pag_mecanica.asp")

case "mct" 'Mecatrônica

Response.Redirect("..\authent\mecatronica.asp")

case "ele" 'Eltrônica

Response.Redirect("..\authent\eletronica.asp")

case "inf" 'Informática

Response.Redirect("..\authent\informatica.asp")

case "pro" 'Professores

Response.Redirect("..\authent\professores.asp")

case "sec" 'Secretaria

Response.Redirect("..\authent\secretaria.asp")

case else

Response.Redirect("erro.asp")

End Select

Else

Response.redirect("erro.asp")

End If

%>

Ele não da erro, mas sempre abre a pagina de erro.asp, onde o usuário é jogado quando a senha, usuário ou outro critério esta fora do padrão...

Novamente Agradeço pela atenção

Consegui resolver!!!!!!!!!!!!

OBRIGADO

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...