PDA

View Full Version : [ASP] Verifica password


Cecco BS
14-07-2003, 14:20
Ho realizzato un modulo di accesso con login e password. Funziona ma, se inserisco una password errata mi restituisce una pagina di errore. Così ho provato a realizzare un messaggio di errore personalizzato in caso di password errata, in questo modo:


<%
else
set conn4=Server.CreateObject("ADODB.Connection")
conn4.Open "Provider=SQLOLEDB;SERVER=ATSSERVER;DATABASE=db;UID=user;PWD=pwd"
Set RS = conn4.Execute("SELECT * FROM tabella INNER JOIN tabella2 ON tabella.cod_age = tabella2.cod_age WHERE tabella2.cod_age='"&codage&"' AND tabella2.password='" &password& "' AND tabella2.login='" &login& "'")
if password <> rs("password") then
response.write("<font face=verdana size=2><b>Accesso negato</b></font>")
else
%>


Se provo a forzare la password scrivendo:

if password <> psw then

funziona, ma se provo a recuperarla dal database mi da il seguente errore:

(0x80020009)
Eccezione.

matpez
14-07-2003, 16:56
Si perchè in caso di psw errata nn trova record nel database ed il recordset è vuoto per cui nn ha nulla da leggere :)

Ora nn so com'è impostata la tua tabella ma se devi verificare un user specifico ti conviene analizzare solo l'user nella WHERE e allora il tuo gioco funziona!!

Se invece lo vuoi mantenere cosi invariata la tua SQL (che è il modo + giusto perchè controlla anche l'user se esiste) allora nel controllo metti cosi:


if rs.bof and rs.eof then
'non ci sono record
else
'ci sono record
end if

ciaooooooooooooooooooooooo :p

tas
14-07-2003, 17:01
Il problema è nella query, così dovrebbe andare:
Set RS = conn4.Execute("SELECT * FROM tabella INNER JOIN tabella2 ON tabella.cod_age = tabella2.cod_age WHERE tabella2.cod_age='" & codage & "' AND tabella2.login='" &login& "'")

Ho tolto il filtro sul campo password perchè altrimenti, con password errata, RS non contiene nessun record e quindi ogni tentativo di lettura dei dati genera un errore.