SOS database access

  • Creatore Discussione Creatore Discussione Otello
  • Data di inizio Data di inizio

Otello

Nuovo Utente
17 Mag 2005
2
0
0
:ister: ragazzi, ho un problema: non essendo ancora molto bravo sul codice asp, vorrei che qualcuno mi spiegasse come risolvere questo quesito: ho una sola paginetta di script (4 righe) per fare il login-utente. Tale script è connesso con un database che raccoglie le iscrizioni. Il problema è che quando faccio la verifica LOGIN-PASSWORD sto cavolo di script mi legge solo il primo rs del database e ignora tutti gli altri restanti. Intuisco che forse c'è da inserire nel codice qualcosa come "EOF" o "BOF" e sicuramente qualche ciclo "loop", ma non so come fare nè conosco la sintassi esatta. Qualcuno esperto potrebbe aiutarmi? Insomma, io voglio che quando un utente digita il suo corretto username e password, lo script verifichi tutti i nominativi presenti nel database e non solo il primo record (che in tal caso non servirebbe a nulla).

lo script è così composto:

<%

Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("/mdb-database/data1.mdb")
strConn=strConn & ";pwd="
Conn.Open strConn

'interrogazione sulla tabella utenti
sql = "SELECT * FROM utenti"

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3

'interrogo il database su due recordSet specifici: il 2 ed il 5
'che contengono rispettivamente i campi [login] e [password]
If Request.Form("login") = rs(2) Request.Form("password") = rs(5) Then
Response.Write "OK! Accesso consentito"
Else
Response.Write "Access Negato!"

'Response.End
End If
%>


<FORM ACTION="login.asp" METHOD="post">
<TABLE BORDER=0>
<TR>
<TD ALIGN="right">Login:</TD>
<TD><INPUT TYPE="text" NAME="login" size="20"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right">Password:</TD>
<TD><INPUT TYPE="password" NAME="password" size="20"></INPUT></TD>
</TR>
<TR>
<TD ALIGN="right"></TD>
<TD><INPUT TYPE="submit" VALUE="Login"></INPUT>
<INPUT TYPE="reset" VALUE="Reset"></INPUT>
</TD>
</TR>


</TABLE>
</FORM>
 
è sbagliata la query

Ciao, a parte che non capisco xkè vuoi fare la verifica solo su 2 records :D
cmq credo sia sbagliata la query.
la stringa di codice ASP x fare la query è:
<%
'interrogazione sulla tabella utenti
sql = "SELECT * FROM utenti WHERE nome_campo_login = ' " & request.form("login") & " ' and nome_campo_password = ' " & request.form("password")& " ' "
%>
sostituisci questa query e leva anche tutto il seguito...e aggiungi:

<%
'se arriva in fondo senza trovare nulla vuol dire ke
'non risultano i dati immessi e quindi dai il messaggio di errore:
if rs.eof then
response.write "login errato"
'se invece li trova...
else
'crei la sessione
session("login") = "ok"
'e lo avverti che ha effettuato l'accesso
response.write"Accesso effettuato"
end if
%>
poi nelle pagine che vuoi proteggere fai:

<%
' se la sessione login non è uguale a "ok"
if not session("login") = "ok" then
'avverti l'utente che non puo entrare se non ha eseguito il login e la registrazione
%>
Spiacente per accedere a quest'area devi essere registrato
(e fai il link alla pagina di registrazione o a quella di login)
<%
'se invece la sessione login è uguale a "ok" vuol dire ke
'ha eseguito il login e gli fai vedere il codice protetto
else
%>

codice html che vuoi visualizzare solo se l'utente ha effettuato il login

<%end if%>




P.s.: Il loop lo devi fare solo se vuoi stampare a video tutti i records.

Ciao fammi sapere se ci sei riuscito
:byebye:
 
Ultima modifica:

Discussioni simili