Problemino Accesso Database (C#)

mercoledì 13 maggio 2009 - 16.12

dyd666 Profilo | Junior Member

Salve a tutti
Nella mia paginina ho un bottone di Login , con questo codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Non da errori di sorta il compilatore di Visual Studio , e fin qui...
Il problema si riscontra al momento di controllare Utente e Password , in quanto questo controllo non avviene.
Posso inserire qualsiasi cosa all'interno dei miei due Textbox , otterrò sempre la visualizzazione di ErrorePass (una label con scritto "Password Errata")

Dove sbaglio?
Grazie mille , saluti

alx_81 Profilo | Guru

>Salve a tutti
Ciao
intanto cerca di non concatenare le stringhe sql, per evitare attacchi di tipo sql injection.
Magari pensa ad usare stored procedure se il tuo rdbms te lo consente oppure query parametriche.
Leggi qui per maggiori informazioni:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

>Dove sbaglio?
hai provato a fare un bel debug passo passo per vedere che succede?

>Grazie mille , saluti

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dyd666 Profilo | Junior Member

Grazie innanzitutto per la risposta
Ho fatto il debug come mi hai consigliato

1°)
String strSQL = "SELECT Password FROM Utenti WHERE Username = '" + User.Text + "'";

La variabile strSQL dovrebbe assumere la query completa anche di nome utente preso da textbox , invece (da debug):

strSQL "SELECT Password FROM Utenti WHERE Username = ''"

2°) Al momento di arrivare al controllo
if (Dr.Read())
il compilatore esce diretto nella Else , dove troviamo
ErrorePass.Visible = true;

Dovrebbe invece entrare nella parte di codice dell'If , visto che la lettura è andata a buon fine... o no?
???

Ciao e grazie

alx_81 Profilo | Guru

>Grazie innanzitutto per la risposta


Già il fatto che sia vuota, vuol dire che non gli arriva..

>2°) Al momento di arrivare al controllo
>if (Dr.Read())
>il compilatore esce diretto nella Else , dove troviamo
> ErrorePass.Visible = true;
>
>Dovrebbe invece entrare nella parte di codice dell'If , visto
>che la lettura è andata a buon fine... o no?
se non trova nulla, va nell'else.. è corretto..


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dyd666 Profilo | Junior Member

Il fatto che non gli arrivi da cosa può essere dato?

alx_81 Profilo | Guru

>Il fatto che non gli arrivi da cosa può essere dato?
così non posso dirti nulla. Prova a passare quello che fai, come hai fatto la form, gli eventi, ecc..
non è che quando passi per la Page_Load il tuo User.Text si svuota eh?


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dyd666 Profilo | Junior Member

>così non posso dirti nulla. Prova a passare quello che fai, come
>hai fatto la form, gli eventi, ecc..
>non è che quando passi per la Page_Load il tuo User.Text si svuota
>eh?
>
EDIT: AGGIUNTA - Ora non mi da problemi nel riconoscimento username e password.
Si presenta però un problema se inserisco un nome utente od una password sbagliate.
In entrambi i casi viene visualizzata la scritta "Password Errata" , ovvero quella label che ti dicevo prima (ErrorePass)

Ho appena controllato , nella Load avevo messo (non so perchè ) lo svuotamento della textbox.
Ti linko il codice della pagina cs tutta

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Questa invece è la parte HTML del login

<div id="login"> Username:&nbsp; <asp:TextBox ID="User" runat="server"></asp:TextBox> <br /> Password:&nbsp; <asp:TextBox ID="Pass" runat="server"></asp:TextBox> <br /> <asp:Label ID="ErroreUtente" runat="server" Text="Nome utente errato!!!" Visible="False"></asp:Label> <br /> <asp:Label ID="ErrorePass" runat="server" Text="Password errata!!!" Visible="False"></asp:Label> <br /> <asp:Button ID="Login" runat="server" Text="Login" onclick="Login_click" /> <br /> Non sei registrato? | <asp:LinkButton ID="Registrati" runat="server">Registrati!</asp:LinkButton> </div>

alx_81 Profilo | Guru

>EDIT: AGGIUNTA - Ora non mi da problemi nel riconoscimento username
>e password.
>Si presenta però un problema se inserisco un nome utente od una
>password sbagliate.
>In entrambi i casi viene visualizzata la scritta "Password Errata"
>, ovvero quella label che ti dicevo prima (ErrorePass)
Secondo me hai scambiato la visibilità dell'errore.
Se non fai la read, visto che cerchi per utente, fai vedere l'errore di password.. il che mi sembra errato.
Mentre quando fai il test sulla pwd, visualizzi l'errore utente..
già qui non credo sia corretto..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

dyd666 Profilo | Junior Member

Ho controllato la visibilità dell'errore , avevi ragione...
Erano scambiati!
Ecco cosa succede a prendere del codice da internet e copiarlo senza ragionarci
Grazie ancora , ciao

alx_81 Profilo | Guru

se ritieni ti abbia aiutato, accetta la risposta così chiudiamo il thread
grazie
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5