Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682

    Valore restituito da una query

    Salve a tutti.......

    Premetto che non conosco asp (uso php), ma mi ritrovo su un server a dover utilizzare per forza asp.(tanto primo o poi lo devo imparare).

    Devo realizzare un area riservata con le sessioni (apriro un altro 3d in merito) .

    Intanto ho creato una pagina welcome.html dove ho un form per l'inserimento di nome utente e password.
    Ho creato un db (access) con una tabella e due campi "user_sms" e "pass_sms".

    Il form (POST) punta alla pagina control.asp il cui codice e' il seguente :

    codice:
    <% 
    Dim the_user
    Dim the_pass
    the_user=Request.Form("usr_sms")
    the_pass=Request.Form("pwd_sms")
    Set conn = Server.CreateObject("ADODB.Connection")
    StrConnect = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" &Server.MapPath("mdb-database\utenti.mdb")&"; Persist Security Info = False"
    conn.open  StrConnect,conn
    set rds_utenti = Server.CreateObject("ADODB.Recordset")
    set rds_utenti=conn.execute("select * from utenti_sms WHERE user_sms='"&the_user&"' AND pass_sms='"&the_pass&"'")
    if rds_utenti.EOF then 
    Response.Redirect("welcome.asp")
    else 
    Response.Write("autenticato")
    end if 
    rds_utenti.close
    Set rds_utenti=nothing
    conn.close
    Set conn=nothing
    %>
    Premesso che questo script sembrerebbe funzionare,ho evidenziato la riga che non capisco. (ho ripreso alcuni spunti da qualche guida).
    Perchè se si verifica "if rds_utenti.EOF" vuol dire che l'utente e la password immessi non corrispondono a quelli nel database ?

    EOF sta per endOfFile giusto ?
    Con questa struttura di controllo vengono scorsi tutti i record del db o solo il primo ?

    In altri linguaggi se facessi if (pippo) //istruzioni
    il codice dentro l'if verrebbe eseguito solo se la variabile pippo esiste(se non vado errato).
    Qualcuno mi illumina per favore ?
    IACO

  2. #2
    non c'entra quello che succede nel db

    il recordset contiene solo i record che sono stati estratti dalla query

    quindi se si verifica l'EOF vuol dire che nel db non sono stati trovati utenti con quello username e quella pass

    il recordset è fatto così:


    BOF (begin of file)
    risultato1
    risultato2
    ..
    ...
    EOF
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  3. #3
    Prova così:

    codice:
    Dim the_user
    Dim the_pass
    the_user=Request.Form("usr_sms")
    the_pass=Request.Form("pwd_sms")
    Set conn = Server.CreateObject("ADODB.Connection")
    StrConnect = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" &Server.MapPath("mdb-database\utenti.mdb")&"; Persist Security Info = False"
    conn.open StrConnect
    Set rds_utenti = Server.CreateObject("ADODB.Recordset")
    rds_utenti.Open "select * from utenti_sms WHERE user_sms='" & the_user & "' AND pass_sms='" & the_pass & "'", conn
    If rds_utenti.EOF Then 
      Response.Redirect("welcome.asp")
    Else 
      Response.Write("autenticato")
    End If 
    rds_utenti.Close
    Set rds_utenti = Nothing
    conn.close
    Set conn = Nothing
    Mauro

  4. #4
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Originariamente inviato da Shagrat
    non c'entra quello che succede nel db

    il recordset contiene solo i record che sono stati estratti dalla query

    quindi se si verifica l'EOF vuol dire che nel db non sono stati trovati utenti con quello username e quella pass

    il recordset è fatto così:


    BOF (begin of file)
    risultato1
    risultato2
    ..
    ...
    EOF
    Grazie della tua attenzione .....

    Quindi se ho capito bene quando faccio "if rds_utent.EOF then"
    l'oggetto recordset ha memorizzato il risultato della query.
    Scorre tutto il recordset (non abbiamo bisogno di cicli in questo caso) e se non trova niente viene eseguito il codice all'interno dell'if.
    Curiosità non restituisce valori tipo vero o falso questo codice non ce ne e' bisogno giusto ?
    IACO

  5. #5
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Originariamente inviato da maueo.mb
    Prova così:

    codice:
    Dim the_user
    Dim the_pass
    the_user=Request.Form("usr_sms")
    the_pass=Request.Form("pwd_sms")
    Set conn = Server.CreateObject("ADODB.Connection")
    StrConnect = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" &Server.MapPath("mdb-database\utenti.mdb")&"; Persist Security Info = False"
    conn.open StrConnect
    Set rds_utenti = Server.CreateObject("ADODB.Recordset")
    rds_utenti.Open "select * from utenti_sms WHERE user_sms='" & the_user & "' AND pass_sms='" & the_pass & "'", conn
    If rds_utenti.EOF Then 
      Response.Redirect("welcome.asp")
    Else 
      Response.Write("autenticato")
    End If 
    rds_utenti.Close
    Set rds_utenti = Nothing
    conn.close
    Set conn = Nothing
    ciao

    Ho visto che avevo fatto diversi errori di battitura, anche se la pagina funzionava lo stesso.

    L'identificatore della connessione andava messo dopo la stringa della query (questo anche in php) brutto errore avevo fatto.
    close e nothing devono essere maiuscoli ?

    Altra curiosità, io testo i file asp in locale con xp pro e iis5 ....
    Sul server avrò win2003 server e iis 6 .... a cosa devrò stare attento in linea di massima ?
    Ho letto in merito solo alcune specifiche su percorsi.
    IACO

  6. #6
    su server 2003 non puoi usare il ../ basta semplicemete che tu srivi i percosri partendo dalla root (tipo /percorso/...)

    l'if non scorre tutto il rs, guarda solo la posizione corrente, e visto che in questo caso si suppone che il risultato della query sia univoco ti va bene l'if.
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  7. #7
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    bene grazie dei chiarimenti......
    La specifica dei percorsi è la stessa che avevo letto.

    Non avevo capito bene l'if, controlla solo un risultato in questo caso, ma come hai giustamente detto, il risultato di questa query sarà sempre al massimo di un record.

    Ciao alla prossima
    IACO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.