Jump to content


Photo

Select No Mssql Igual A Dado Vindo De Request.form


  • Faça o login para participar
12 replies to this topic

#1 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 14/04/2005, 13:57

Minha gente, desta vez embatuquei mesmo. Peço sua ajuda!!!
1 - Uso Windows 2000 Server, com MSSQL 2000, desenvolvendo o site (em .ASP) "www.contratosonline.com.br", para montagem on line de Contratos.
2 - Nas páginas do tipo da "http://www.contratos...tamentoloc.asp", há o código:
"Nome de Usuário ("username") <INPUT class="input" type=text name="username" id="username" size=15 maxLength=50 onfocus="style.backgroundColor='#E6E8FA'; style.color='#8E236B'" onblur="style.backgroundColor='#FFFFFF'; style.color='#000088'">" -- e outro similar para o input name="password".

3 - esse form, method="POST", deve conduzir esses 02 dados para a página oculta "check1190.asp", onde deverão ser comparados com os "name" e "password" da tabela "Members" do BD (MSSQL) "Members", isto é, para "autorizar" o acesso deles; o código é:
"<%@ LANGUAGE = "VBScript"
ENABLESESSIONSTATE = False %>
<% Option Explicit %>
<!-- #include virtual="../../inc/inc-conexao.asp"-->
<!-- #include virtual="../../inc/adovbs.inc"-->
<%
Dim username, name, password, tabelatitulo, contratonome
username=Request.Form("username")
password=Request.Form("password")

Dim objConn, objRS, rs, strSQL, id, strConnection
Call abre_objConn

Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS.ActiveConnection = objConn
strSQL="SELECT Members.name, Members.password FROM Members WHERE name = '" & username & "' AND password = '" & password & "'"
objRS.Open strSQL

While Not objRS.EOF
tabelatitulo="aditamentoloc"
contratonome=request.Form("contratonome")
' Cria os cookies
response.cookies("remain")=username
response.cookies("still")=password
response.cookies("idtabela")=tabelatitulo
response.cookies("idcontrato")=contratonome

If Request.Form("username")=objRS("name") AND Request.Form("password")=objRS("password") AND Request.Form("contratonome")<>"" Then
Response.redirect("../../contratos/aditamentoloc/aut1190.asp")
Else....."

4 - Nesta página aí, a configuração da conexão é feita com um arquivo incluído ("inc-conexao.asp") com o seguinte texto:
"<%
sub abre_objConn
Set objConn = Server.CreateObject("ADODB.Connection")
strConnection = "Driver={SQL Server};SERVER=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
objConn.Open strConnection
end sub
sub fecha_objConn
objConn.close
Set objConn = Nothing
end sub
%>".

5 - SE o Usuário estiver cadastrado, os dados vão para uma página "aut1190.asp" onde esse pedido será incluído nas tabelas que gravarão os dados desse novo Contrato que será montado.
6 - o "diabo" é que, quando 'rodo' o programa -- usando, claro, o nome+senha de um Usuário-modelo, o programa me diz diz que... "Não foi possível autenticar os dados do Usuário ou da sua senha.....". ??!????!@#*&@?
Agradeço antecipadamente sua ajuda!
Dalton, Rio

Edição feita por: Tx.NET, 14/04/2005, 14:54.


#2 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 14/04/2005, 14:56

vamos com calma......

esse erro que dá é do seu sitema de login !?


saca só:

<!-- #include virtual="../../inc/inc-conexao.asp"-->
<!-- #include virtual="../../inc/adovbs.inc"-->


vc não pode voltar em pastas.... com o include... somente subir nivel
tente colcocar os arquivos conexao e adovbs na mesma pasta que o check1190.asp


uma dica agora:

' Cria os cookies
response.cookies("remain")=username
response.cookies("still")=password
response.cookies("idtabela")=tabelatitulo
response.cookies("idcontrato")=contratonome


evite usar cookies em sistemas de login, algumas pessoas desabilitam no navegador, tente usar session


o response redirect

Response.redirect("../../contratos/aditamentoloc/aut1190.asp")


mesmo erro do include lá de cima.... se estiver em outra pasta tente mudar para o endereço do site:

Response.redirect("http://www.contratosonline.com.br/contratos/aditamentoloc/aut1190.asp")



#3 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 14/04/2005, 14:57

rapaz du céu!!!!!!
c é doido mininu?!?!!? postar o endereço do servidor de BD com usuário e senha, ainda mais com a URL de um sistema de vcs completa?!?!?!?

vish...

velhinho, mudei a linha d conexão para nada, mas c insistir, soh altera-la de volta a original... soh naum recomendo.. rs..
qnt a sua dúvida, seja mais direto, post o q tah acontecendo e oq quer q aconteça...


flws... (y)
> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#4 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 14/04/2005, 19:10

Eta ferro (e eu, que pensei que ninguém responderia...)!!!
Como diria Jack, o Estripador: "Vamos por partes":

Primeiro, respondendo ao viniviusjau:
1 - esse erro, dá quando um Visitante -- que não necessita "logar"-se para navegar pelo site -- resolve montar um Contrato: para o que, já deverá estar cadastrado como "Cliente exclusivo". Assim, na página "1190aditamentoloc.asp", ele então se "loga" -- e, justamente, SE ele se "logar" com nome ou senha errados, ou sem estar cadastrado, é que deveria dar aquela mensagem de erro...

2 - esse tipo de "include", tanto "file" quanto "virtual", sempre usei, e uso em outras passagens deste site, e nunca deu problema! Será que não há outra solução que não a de repetir o "inc-conexao" e o "adovbs" em CADA pasta de Contrato que for colocar no site (olha, já são cerca de 15, mas serão mais de 100!)?

3 - confesso a Vocês, humildemente, que NÃO sei fazer essa substituição, do "cookies" pelo "session". A rigor, essa tabela SQL "Members" é de um (excelente) programa freeware "WebWiz Mailing List" que cadastrará os nossos Clientes para receberem nosso Boletim -- cadastro, esse, que será o mesmo para que eles usufruam de outras facilidades, como a de montarem seus Contratos! Esse programa, WebWiz, usa "sessions", não sei se o correto seria colocar, no início da página "check1190.asp" o código
<%
Option Explicit
On Error Resume Next
Response.Expires = 600
%> (ACHO que é +- por aí...). Nem havia feito menção a esse programa, já que a tabela "members" é uma tabela normal, as "permissões" para mim estão OK, e NESTA parte esta página "check1190.asp"apenas CONSULTA aquela tabela!

4 - quanto ao "response.redirect", idem no uso até hoje. Ele funcionava perfeitamente com o ANTIGO programa WebWiz ML, que substituí porque (1) não previa o envio de e-mail para o Visitante confirmar/autenticar seu cadastramento, e (2) porque usava Access, ao passo que todos os BD de montagem dos Contratos usam MSSQL. De todo modo, mudarei para o caminho FÍSICO!

E agora, quanto ao Tx.NET:
1 - burrice. Burrice se confessa, não se explica nem se justifica!, mas lhe agradeço a gentileza da iniciativa!

2 - no mais, vamos lá:
2.1 - creio que parte da sua dúvida, esteja já respondida acima, mas
2.2 - o que essa página "check1190.asp" deveria(!) fazer, é:

PRIMEIRO - pegar os dados "username" e "password" informados pelo Usuário na página anterior "1190aditamentoloc.asp",
SEGUNDO - comparar com os registros de "name" e "password" existentes na tabela "members" do MSSQL DB "Members" e,
TERCEIRO - SE PELO MENOS UM desses 02 dados não "bater" (por ter sido digitado errado), ou SE AMBOS não "baterem" (pelo fato de esse Usuário não estar ainda cadastrado como nosso "Cliente Exclusivo", não integrando portanto a tabela "Members") -- AÍ SIM, É QUE O SISTEMA DEVERIA DAR AQUELE ALERTA!!!...

Caso contrário, isto é, se "name"+"password" desse Usuário "baterem", a página seguinte "aut1190.asp" deverá incluí-lo nas (outras) tabelas que gravarão os dados desse novo Contrato que será montado.

Não sei se fui suficientemente claro -- porém quero reiterar meus agradecimentos pela "força"!!!
Um grande abraço, do Dalton

#5 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 14/04/2005, 19:39

me chamou de burro?! rs... ;) :o
to zuando... soh ter mais cuidado na próxima.. rs..

agora, qnt a sua dúvida, ainda tah meio xxxxxx de entender.. e na verdade, to na facul meio sem tempo d ficar lendo...

tipo, to o dia todo no msn, c quizer, me manda um MP q te passo meu contato, resolvemos o problema e vc posta a solução aki.*

*antes de me mandar a MP, tente, tente, tente, acesse o Google, busque aki no fórum, depois, c nada disso funfar, pode chamar q c tiver em um momento mais sussa, com certeza te ajudo...


flws... (y)
> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#6 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 15/04/2005, 09:48

Prezada Tx.NET (e não, "prezado", desculpe-me, não tinha prestado atenção no seu "retrato" [rs], não é machismo, não...)

1 - NÃO consegui descobrir, nas várias páginas de regras do Fórum, COMO enviar uma MP: apenas indiquei "Modo guiado" (que também não sei o que é...)

2 - o que acho que está acontecendo é que o sistema NÃO está conseguindo recuperar, na pág. "check1190.asp", os 02 dados vindos da pág. "1190aditamentoloc.asp"...

Um abração, e meu muito obrigado pela sua paciência...

#7 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 15/04/2005, 09:51

E prezado viniciusjau
Em atenção ao meu item 2 da resposta a Você: nos dois "includes" que eu tenho na página, troquei o endereço virtual pelo físico (a partir do "http//www..."), e nada...!
Será que tem caveira de burro no meu script?
Um abraço, agradecido, do Dalton

#8 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 15/04/2005, 10:15

nos dois "includes" que eu tenho na página, troquei o endereço virtual pelo físico (a partir do "http//www..."), e nada...!

cara.. eu nunca usei o include assim sempre coloquei na mesma pasta... achei estranho vc dizer que usava antes e funcionava

e se seus arquivos do include forem iguais para todos os contratos acho que o ideal é vc colocar todos eles na mesma pasta junto com os contratos.... reestruturar o seu sitema ai.....

se bme que falando assim é facil eu não sei como está a estrutura da suas pastas e fica um pouco complicado..


ps. o TX é przadO !! ;)

Edição feita por: viniciusjau, 15/04/2005, 10:26.


#9 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 15/04/2005, 14:15

PrezadO viniciusjau
(Aproveito para me desculpar com O TX -- apesar do "retrato"!!!)

Vi, num outro tópico do qual Você participou, uma aula sua sobre "sessions" (mas não me lembro onde foi...).

Será que é difícil deixar os "cookies" (que, de fato, muitos não habilitam) e trocá-los por "sessions"?

Isto porque creio, firmemente, que o problema está em que o sistema
- ou não está passando o "username" e o "password" de uma pág. para outra
- ou não os está "reconhecendo" (?) na pág. seguinte!

Já a "session", pelo que sei, está "acima desses probleminhas", pois os dados ficariam "no ar", na "session" durante sua duração. Certo?

#10 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 15/04/2005, 17:19

vamos por partes então....

pra mudar pra session , só seu codigo, depois que o cara logar no mesmo arquivo que confere o login e a senha do cara vc coloca:


Session("remain") = "username"
Session("still") = request("password")
session("id_tabela") =("tabelatitulo")
session("idcontrato") =("contratonome")


só não entendi porque vc criou um cookie pra senha do cara....

mais blz continuando....
dai na pagina da parte restria do site vc faz isso:

<%
If IsEmpty(Session("remain")) Then
Response.redirect("login_errado.asp")
Else
Response.Write("<b>Bem Vindo:</b> <u>" & Session("remain"))
End if
%></u>


isso verifica se a pessoa fez o login

tenta explicar melhor o erro do seus sistema de login pra gnete tentar te ajudar... use o QUOTE pra destacar seus codigos pra ficar mais facil pra gente visualisar !!

fiz isos ai meio na correria, vê se dá certo !!

(y)

#11 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 15/04/2005, 17:48

Caro viniciusjau
...ainda não deu.

Deixa-me resumir:

1 - na primeira das págs ("1190aditamentoloc.asp"), o Usuário deve-se "logar" (com nome e senha);

2 - na próxima pág ("check1190.asp"), esses dados dele são confrontados com o que tem arquivado na MSSQL tabela "members":
- se não "batem" -> popup de alerta com aquela mensagem de erro; mas
- se sim, "batem" -> então o Usuário é levado para...

3 - ...para a terceira pág ("aut1190.asp"), onde é aberto um "record" para os dados do Contrato que ele vai montar.

O problema é que está dando SEMPRE aquela mensagem de erro -- como disse,
- ou os dados não estão passando da 1a. p/ a 2a. página (não creio)
- ou o sistema não os está "reconhecendo", "lendo", ou outra droga parecida!!!

#12 dig

dig

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 25/04/2005, 16:41

viniciusjau + txNet
Consegui resolver o problema através de um script que peguei na WWW: juntando o form - e - o processamento do form em uma mesma página .ASP! Veja:

1. ANTES das tags <HTML><HEAD> colocar:
<% @ LANGUAGE = "vb script:meuscontratos();"><IMG src="../../imagens/atencao6.gif" border=0 style="position:relative;top:-1px;" align="middle" alt="Caso Você tenha montado, e/ou esteja montando,
mais de um Contrato em nosso site, será preciso
que Você possa diferenciar um - dos - outros.
Assim, coloque aí um ''nome'' curto, de fácil memo-
rização, que facilite a Você acessá-los separada-
mente, como por exemplo:
''contratogomes'', ''locacaosubsede'', etc. - mas
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NÃO USE, para CADA Contrato, O MESMO NOME
que Você já esteja usando COM A MESMA SENHA
para montar conosco aqui um OUTRO Contrato
- ESCOLHA UM OUTRO NOME (qualquer um)!
- senão, AMBOS os textos ficarão truncados!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ATENÇÃO: Você esqueceu o ''nome'' do Contrato?
• clique aqui, para abrir uma lista com os
  nomes dos Contratos que Você está montando
  ou que já estão prontos, montados"></a> deste Contrato</b> <SPAN style="position:absolute;left:213px;"><INPUT class="input" type=text name="contratonome" size=15 maxLength=50 onfocus="style.backgroundColor='#E6E8FA'; style.color='#8E236B'" onblur="style.backgroundColor='#FFFFFF'; style.color='#000088'"></SPAN></DIV>

<SPAN style="position:absolute;left:10px;top:106px;">
<A onmouseover="title='Você ainda não está cadastrado?\n• clique aqui, e passe a usufruir deste,\n&nbsp;&nbsp;&nbsp;e de outros serviços reservados ao\n&nbsp;&nbsp;&nbsp;nosso “Cliente exclusivo”';window.status='Clique aí, para se tornar nosso “Cliente exclusivo” — depois, clique em “X”, no alto à direita, para fechar e voltar'; return true" onmouseout="title='';window.status = ''; return true" href="../../admcol/cadastro.asp"><IMG src="../../imagens/popergunta1.gif" border=0></a></SPAN>

<DIV style="position:absolute;left:122px;top:163px;width:193px;height:25px;">
  <input style="background-color:#FDF5E6; color:#000099" type=button value=" <<  Voltar" onClick="history.go(-1)">
  <input style="background-color: #FDF5E6; color: #000099" type="submit" value="Avançar >>"></FORM></DIV></DIV></DIV>

<%
else
strSQL = "SELECT * FROM members " _
    & "WHERE name='" & Replace(Request.Form("username"), "'", "''") & "' " _
  & "AND password='" & Replace(Request.Form("password"), "'", "''") & "';"
%>
<!-- #include virtual="../../inc/inc-contratos.asp" -->
<%
If Not rstLogin.EOF then

'----- ATENÇÃO: POR AQUI O TIPO DE CADA CONTRATO -----
tabelatitulo="locespecial"

' Cria os cookies
response.cookies("remain")=Request.Form("username")
response.cookies("still")=Request.Form("password")
response.cookies("idtabela")=tabelatitulo
response.cookies("idcontrato")=Request.Form("contratonome")
username=Request.Cookies("remain")
password=Request.Cookies("still")
tabelatitulo=Request.Cookies("idtabela")
contratonome=Request.Cookies("idcontrato")

Set cnnLogin = Server.CreateObject("ADODB.Recordset")
z=request("col")
if z<>"" then
Response.Redirect "aut1025.asp"
end if 

else
Response.Write "<" & "script language='JavaScript'>" & _
        "window.alert('Prezado/a Cliente\nNão foi possível autenticar os dados do Usuário ou da sua senha:\nAlgum desses dados deve ter sido digitado com engano.\nFavor revisá-los, e tentar novamente.\n\nObrigados\n            Contratos on Line'); " & _
        "window.location.href='1025locespecial.asp'" & _
        "</script>"
  'Response.End
end If

' Clean Up
rstLogin.Close
Set rstLogin = Nothing
cnnLogin.Close
Set cnnLogin = Nothing
End If
%>


Muitíssimo grato, porém, pelas dicas, e pela força! Valeu mesmo! Um abração do
Dalton

#13 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 25/04/2005, 16:49

q bom q encontrou uma solução!
precisando, tamos ae...

flws... (y)
> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq