15 messaggi dal 27 settembre 2014
Buongiorno,
ho "comprato" da un sito di hosting un server gratuito che gira in ASP.
Ho fatto il file connection.asp (che vi metto sotto) e incluso nelle varie pagine del sito.
<% 
   dim conn, StrConn
   Set conn = Server.CreateObject("ADODB.Connection")  
   '*******  2007  
   'StrConn="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="&Server.MapPath("db/DB_Pokemon_Universe.accdb")&";Persist Security Info=False"
   conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=F:\user2\Dazorn\DB_Pokemon_Universe.mdb"
%>

Il problema penso sia quando lo script ASP deve interagire con il database, in quanto mi da questo errore:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/Dazorn/login.asp, line 16


Qui vi metto lo script della pagina in cui avviene l'errore. (la home del sito non da problemi, quindi penso il file connection.asp sia giusto):

<%
dim nick,psw
nick = request.form("nick")
psw = request.form("psw")
sql = "Select * from Utenti"
set rs = db.execute(sql)
i=0
dim nickname, check
'Fine Variabili
if rs.bof then
response.write("Database vuoto")
else
do while not rs.eof
  i = i + 1
  if nick = rs("Nickname") and psw = rs("Password") then
    response.write("Login avvenuto con successo")
    check = 1
  else
  response.write("Nickname o Password non corretti, riprovare")
  end if
loop
end if
%>


Aiutatemi perfavore, ci sto lavorando su da 2 o 3 giorni senza alcun risultato. Grazie :)

VUOI SOLDI FACILI E GRATIS? GUARDA QUI: http://freebitco.in/?r=852077
15 messaggi dal 27 settembre 2014
Proprio nessuno?

VUOI SOLDI FACILI E GRATIS? GUARDA QUI: http://freebitco.in/?r=852077
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
indica qual è la riga 16 del file login.asp. E' lì che si genera l'errore. Intanto controlla quanto segue:
  • Che nella connection string il percorso al database sia corretto.
    Hai scritto F:\user2\Dazorn\DB_Pokemon_Universe.mdb ma sei assolutamente sicuro che che nello spazio che ti è stato dato dal servizio di hosting il percorso sia quello? Quasi sempre si usa Server.MapPath per calcolare il percorso dinamicamente dato che, non avendo accesso amministrativo al server, non è facile prevedere quale sarà il percorso fisico del database.
  • Che prima di eseguire questa riga di codice
    set rs = db.execute(sql)
    
    Tu abbia correttamente creato l'oggetto 'db'. Vedo che nel precedente codice hai creato e assegnato l'oggetto Connection ad una variabile chiamata 'conn'. Qui invece stai usando 'db', come mai?


ciao,
Moreno
Modificato da BrightSoul il 28 settembre 2014 08.48 -

Enjoy learning and just keep making
15 messaggi dal 27 settembre 2014
Ho modificato il nome della variabile conn in db. L'errore di login.asp era proprio sulla riga 16 = set rs = db.execute(sql). Ora ho provato di nuovo e da questo errore:

Response object error 'ASP 0251 : 80004005'

Response Buffer Limit Exceeded

/Dazorn/login.asp, line 0

Execution of the ASP page caused the Response Buffer to exceed its configured limit.


Cosda è successo? Come ho detto ho solo cambiato il nome della variabile.

VUOI SOLDI FACILI E GRATIS? GUARDA QUI: http://freebitco.in/?r=852077
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, buona domenica.
Diamo per buono l'errore, che dice:

Response Buffer Limit Exceeded

Vuol dire che probabilmente stai usando Response.Write per scrivere una quantità di dati tale che il buffer si riempie.

Come si spiega? Vediamo la tua query al database:
sql = "Select * from Utenti"

Qui stai selezionando tutti gli Utenti del database. Se ne hai mille, il successivo ciclo do while not rs.Eof girerà mille volte, e causerà altrettante scritture della stringa "Nickname o Password non corretti, riprovare" sulla Response, saturandola.

Questa è una possibile spiegazione del problema che stai riscontrando. Non so se nella pagina login ci sia altro codice che potrebbe contribuire al problema.

Quello che dovresti fare è modificare la tua query affinché restituisca solo l'utente desiderato.
sql = "Select * from Utenti WHERE NickName='" & FixSQL(nick) & "'"

Dove FixSQL è la funzione che trovi definita in questo script.
http://www.aspitalia.com/script/595/Proteggersi-Attacchi-SQL-Code-Injection-ASP.aspx

ciao,
Moreno
Modificato da BrightSoul il 28 settembre 2014 14.24 -

Enjoy learning and just keep making
15 messaggi dal 27 settembre 2014
Grazie, purtroppo ora c'è n altro problema.
Quando fai il login e vede che il nick non è presente nel db da errore di password o nickname errati, e fina qui va bene. Ma quando metto il nick e la password giusti continua a dare l'errore di prima.
Ecco il nuovo codice asp:

<%
Function FixSQL(stringa)
 stringa = Replace(stringa, "'", "''")
 stringa = Replace(stringa, "%", "[%]")
 stringa = Replace(stringa, "[", "[[]")
 stringa = Replace(stringa, "]", "[]]")
 stringa = Replace(stringa, "_", "[_]")
 stringa = Replace(stringa, "#", "[#]")
 FixSQL = stringa
End function

dim nick,psw
nick = request.form("nick")
psw = request.form("psw")
sql = "Select * from TB_Utenti WHERE Nickname='" & FixSQL(nick) & "'"
set rs = db.execute(sql)
i=0
dim nickname, check
'Fine Variabili
if rs.bof then
response.write("Nickname o Password non corretti, riprovare")
else
do while not rs.eof
  i = i + 1
  if nick = rs("Nickname") and psw = rs("Password") then
    response.write("Login avvenuto con successo")
    check = 1
  else
  response.write("Nickname o Password non corretti, riprovare")
  end if
loop
end if
%>


si, cè un altra stringa di codice a fondo pagina contenente un if che verifica se ha fatto o meno il login, in modo da mostrare il form di nuovo:

<%
if check = 1 then
  response.write("<p>Benvenuto, "& nick & "</p>")
else
  response.write("<form style='padding:20px;'action='login.asp'method='post'name='login'><input type='text'name='nick'placeholder='Nickname'><br><input type='password'name='psw'placeholder='Password'><br><input type='submit'value='Login'><br></form>")
end if
%>

Modificato da Dazorn il 28 settembre 2014 14.45 -

VUOI SOLDI FACILI E GRATIS? GUARDA QUI: http://freebitco.in/?r=852077
11.886 messaggi dal 09 febbraio 2002
Contributi
Prova ad eliminare questo pezzo, penso che non serva a nulla:
if rs.bof then
response.write("Nickname o Password non corretti, riprovare")
else

...così come l'end if corrispondente.
Come mai controllavi il valore di rs.bof? Messo in quel punto credo che restituisse sempre True.
La proprietà Bof, al contrario di Eof, restituisce True quando si è all'inizio del recordset.

ciao,
Moreno

Enjoy learning and just keep making
15 messaggi dal 27 settembre 2014
Ok, per ora il login con dati giusti funziona...
però quando metto i dati sbagliati mi da questo errore:

ADODB.Field error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/Dazorn/login.asp, line 27


rs.bof lo uso per verificare se il code sql ha trovato qualche record... comunque ecco qua il codice che uso aggiornato... sto impazzendo D:

<%
Function FixSQL(stringa)
 stringa = Replace(stringa, "'", "''")
 stringa = Replace(stringa, "%", "[%]")
 stringa = Replace(stringa, "[", "[[]")
 stringa = Replace(stringa, "]", "[]]")
 stringa = Replace(stringa, "_", "[_]")
 stringa = Replace(stringa, "#", "[#]")
 FixSQL = stringa
End function

dim nick,psw,check
nick = request.form("nick")
psw = request.form("psw")
sql = "Select * from TB_Utenti WHERE Nickname='" & FixSQL(nick) & "'"
set rs = db.execute(sql)
rightpsw = rs("Password")
'Fine Variabili
if rs.bof then
response.write("login sbagliato")
elseif psw = rightpsw then
response.write("login giusto")
check = 1
end if
%>

VUOI SOLDI FACILI E GRATIS? GUARDA QUI: http://freebitco.in/?r=852077

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.