Ciao a tutti,
sono un giovane programmatore e sto sviluppando un sito web con ASP e Javascript per un esame universitario.
ho un piccolo GRANDE problema al momento inspiegabile...
Su questo sito (che simula un portale di acquisto libri via web) sono prevista la possibilità di iscriversi e successuvamente di loggarsi di nuovo qualora si è già registrati.
quando creo un nuovo utente, tutto funziona alla perfezione... quando invece mi loggo come utente già in database, vedo la prima pagina ma ogni volta che torno su altre pagine ottengo errore:
ADODB.Field error 800a0d5c <<L'oggetto non è più valido.>> /guest.txt, riga 11
### guest.txt ###
codice:
<% Response.write("
Timeout is now: " + Session.Timeout)
Response.write("
User is now: " + Session("sess_name"))
Response.write("
Deposit is now: " + Session("sess_deposit"))
var guest = Session("sess_name")
var cash = Session("sess_deposit")
Response.write("
guest essere uguale a:" + guest)
Response.write("
session name essere uguale a:" + Session("sess_name"))
if (guest == undefined || guest== "" || guest == "undefined"){
guest = "???"
}
if (isNaN(cash) || cash == undefined || cash == "") {
cash = 0
}
%>
Benvenuto <%=guest%>, il tuo deposito è <%=cash%> </p>
La pagina ASP che controlla la creazione del nuovo utente oppure il ritorno di un utente già iscritto è la seguente:
### operazioni.asp ###
crea = 1 --> nuovo utente, proviene da new.asp
crea = 11 --> utente già iscritto, proviene da login.asp
codice:
if (crea == 1) {
var crediti = Number(Request.Form("crediti"))
if (isNaN(crediti) || crediti > 100){
Response.Write("
Crediti inseriti in maniera errata</p></div>
clicca qui per ritornare alla pagina di creazione utente!")
Response.End
}
' Check presenza utenti'
var con
var conString
con= Server.CreateObject("ADODB.Connection")
conString = "Provider = Microsoft.Jet.OLEDB.4.0; " + "Data Source = " + Server.MapPath("./bookstore.mdb")
con.Open(conString)
var sSQLString
var rst
rst= Server.CreateObject("ADODB.Recordset")
sSQLString= "SELECT name FROM users WHERE name= '"+utente+"';"
rst= con.Execute(sSQLString)
if (!rst.EOF) {
Response.Write("
Nome Utente già in uso...</p></div>
")
Response.Write("clicca qui per ritornare alla pagina di creazione utente!")
Response.End
rst.Close( )
rst = null
con.Close( )
con = null
}
'Scrittura nel DB'
sSQLString= "INSERT INTO users (name, pass, deposit) VALUES ('"+utente+"','"+password+"', "+crediti+");"
con.Execute(sSQLString)
Response.Cookies("BookAtHome")("user") = utente
var expire= new Date()
expire.setDate(expire.getDate() + 3)
Response.Cookies("BookAtHome").Expires = expire.getVarDate()
Session("login")= 100
Session("sess_name")= utente
Session("sess_deposit") = crediti
Session.Timeout = 30
}
else if (crea == 11) {
'Autenticazione User e Password'
var con
var conString
con= Server.CreateObject("ADODB.Connection")
conString = "Provider = Microsoft.Jet.OLEDB.4.0; " + "Data Source = " + Server.MapPath("./bookstore.mdb")
con.Open(conString)
var sSQLString
var rst
rst= Server.CreateObject("ADODB.Recordset")
sSQLString= "SELECT name, pass, deposit FROM users WHERE name= '"+ utente +"';"
rst= con.Execute(sSQLString)
if (rst.EOF || rst("pass") != password){
Response.Write("
Accesso negato! Autenticazione fallita...</p></div>
")
Response.Write("clicca qui per ritornare alla pagina di login!")
Response.End
} else if (!rst.EOF && rst("pass") == password){
Response.Cookies("BookAtHome")("user") = utente
var expire= new Date()
expire.setDate(expire.getDate() + 3)
Response.Cookies("BookAtHome").Expires = expire.getVarDate()
Session("login")= 100
Session("sess_name")= rst("name")
Session("sess_deposit") = rst("deposit")
Session.Timeout = 30
}
'rst.Close( )'
'rst = null'
'con.Close( )'
'con = null'
}
Le 2 connessioni al db e il salvataggio dei dati nell'oggetto SESSION sono praticamente identici... Tutte le pagine hanno un controllo sul valore di Session("login") che se posto a 100 vuol dire loggato.
Ora non riesco proprio a capire come mai se mi comporto da nuovo utente, tutto ok!
se invece faccio il login, dopo 1 pagina mi esce quel cavolo di errore... :-(
Sarà qualcosa legata alla Session? Perché mi da errore di ADODB?
Chiunque possa darmi una mano, un suggerimento, un'idea... accetto tutto volentieri!!!
Grazie,
robymag
p.s. posso fornirvi anhe altri pezzi di codice, basta chiedere :-P è solo una tesina d'esame, non un sito commerciale...