16 messaggi dal 20 febbraio 2005
ho un problema con un controllo su la login
in pratica nella pagina check_user.asp oltre a controllarmi i campi della login dovrebbe controllare anche un campo del database access che si chiama stato
se nel campo stato il valore è disabilited dovrebbe reindirizzare l'utente su la pagina unautorised_user_page.htm altrimenti sulla pagina autorizzata

questo è il codice che ho scritto ma non funziona dove sbaglio ?

grazie

<%
Dim nome_ut
Dim pass
Dim stato
nome_ut = trim(Replace(Request.Form("txtUserName"), "'", "''"))
pass = trim(Replace(Request.Form("txtUserPass"), "'", "''"))
Dim SQL,rs
Dim Conn
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("../_mdb-database/utenti.mdb")
sql = "SELECT id FROM tbl_authors WHERE name='" &nome_ut&"' AND pass='" &pass&"' AND stato='" &stato& "'"
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs=Conn.Execute(SQL)
Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
if stato= ("disabilited") then
Response.Redirect("unautorized_user_page.htm")
else

if autenticato = true then
Session("UtenteAutenticato") = "OK"
Session("username") = trim(Request.Form("username"))
Session("id_utente") = rs("id")
Response.Redirect("authorised_user_page.asp")
else
Response.Redirect("unauthorised_user_page.htm")
end if
end if
rs.Close
conn.Close
Set rs = Nothing
Set cn = Nothing
%>
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Dove la valorizzi la variabile 'stato'?

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
16 messaggi dal 20 febbraio 2005
vale a dire non lo so so solo che stato è un campo della tabella del data base
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Questo l'ho capito; il punto è che nella query tu imposti un criterio di ricerca secondo cui il record deve avere il campo "stato" impostato al valore della variabile chiamata anch'essa "stato" che, contrariamente al suo nome, non è stata affatto valorizzata per cui il criterio di discriminazione non ha effetto.

Mi sono spiegato adesso?

Il campo "stato" che tipo di campo è? Che dati contiene?

Ciao

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
16 messaggi dal 20 febbraio 2005
non ho capito molto
stato è un campo del database che contiene tre tipi di dati cioè le autorizzazioni degli user e puo avere come impostazione disabled autorizzato o sospeso
io vorrei che oltre a cercare se la pw e user sono corretti dovrebbe vedere se l'user è abilitato o meno mi sono spiegato?

grazie
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
non ho capito molto

Andiamo bene.....

Intanto correggi la query così:
sql = "SELECT id, stato FROM tbl_authors WHERE name='" &nome_ut&"' AND pass='" &pass&"';"


E poi correggi il resto, a partire dall'if, così:
Dim autenticato <--- Eliminalo, non serve
if rs.eof then 
chiudiDB()
Response.Redirect("unautorized_user_page.htm") 
else 
if rs("stato")= "disabled" then 
Session("UtenteAutenticato") = "OK" 
Session("username") = trim(Request.Form("username")) 
Session("id_utente") = rs("id") 
chiudiDB()
Response.Redirect("authorised_user_page.asp") 
else 
chiudiDB()
Response.Redirect("unauthorised_user_page.htm") 
end if 
end if 

SUB chiudiDB()
rs.Close 
Conn.Close 
Set rs = Nothing 
Set Conn = Nothing 
END SUB


Ultimo consiglio: forse dovresti studiare un po'.

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
16 messaggi dal 20 febbraio 2005
ho inserito il codice come mi hai detto
ma ora non fa entrare nessun utente
ecco il codice magari ho sbagliato

<%
Dim nome_ut
Dim pass
Dim stato
nome_ut = trim(Replace(Request.Form("txtUserName"), "'", "''"))
pass = trim(Replace(Request.Form("txtUserPass"), "'", "''"))
Dim SQL,rs
Dim Conn
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("../_mdb-database/utenti.mdb")
sql = "SELECT * FROM tbl_authors WHERE name='" &nome_ut&"' AND pass='" &pass& "'"
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs=Conn.Execute(SQL)
if rs.eof then
chiudiDB()
Response.Redirect("unauthorised_user_page.htm")
else
if rs("stato")= "disabled" then
Session("UtenteAutenticato") = "OK"
Session("username") = trim(Request.Form("txtUserName"))
Session("id_utente") = rs("id")
chiudiDB()
Response.Redirect("authorised_user_page.asp")
else
chiudiDB()
Response.Redirect("unauthorised_user_page.htm")
end if
end if

SUB chiudiDB()
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
END SUB
%>
poi mi consigli dove studiare?
grazie
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Intanto correggi:
Set rs=Conn.Execute(SQL)

Con:
 
--->  rs.Open sql, Conn

Dopo di che: il campo stato contiene il valore "disabled" oppure, come hai scritto ambiguamente in un post precedente, "disabilited"?

Sei sicuro che l'utente che inserisci nel modulo di login sia correttamente registrato nel DB?

Prova inoltre a cambiare:
if rs("stato")= "disabled" then 
 
con:
 
--->  if rs("stato") = "autorizzato" then

Ciao
Modificato da vitosulla il 25 febbraio 2005 12.54 -

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.