Doffar Skrevet 1. juni 2005 Del Skrevet 1. juni 2005 (endret) Hallo Jeg har laget dette scriptet for å hente ut kryptert passord fra databasen slik at jeg kan se om brukernavn og passord stemmer. Men jeg får ikke hentet ut den ene cellen med passordet som tilhører brukernavnet som brukeren har screvet inn. Med dette scriptet her får jeg feilen som dere kan se nederst. Noen som kan hjelpe meg og få scriptet til å fungere? public void TestBruker_Klikk() { string Brukernavn = FormsAuthentication.HashPasswordForStoringInConfigFile(txtBrukernavn.Text,"md5"); string Passord = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPass.Text + txtBrukernavn.Text,"md5"); using(OdbcConnection con = new OdbcConnection(ConnStr)) using(OdbcCommand cmd = new OdbcCommand("SELECT Password FROM Brukere WHERE Username=@Username", con)) { cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = Brukernavn.Trim(); cmd.Parameters.Add("@Password", OdbcType.VarChar, 32).Value = Passord.Trim(); con.Open(); OdbcDataReader reader; reader = cmd.ExecuteScalar(); while (reader.read()) { object iResults = reader["Value"].ToString.Trim(); } } if (iResults == Passord) { EtterText.InnerHtml = "Correct login"; } else { EtterText.InnerHtml = "Uncorrect login"; } } Cannot implicitly convert type 'object' to 'System.Data.Odbc.OdbcDataReader Line 65: OdbcDataReader reader; Line 66: [COLOR=red]Line 67: reader = cmd.ExecuteScalar();[/COLOR] Line 68: Line 69: while (reader.read()) { Endret 1. juni 2005 av Doffar Lenke til kommentar
Kenti Skrevet 2. juni 2005 Del Skrevet 2. juni 2005 (endret) ** Endret 2. juni 2005 av Kenti Lenke til kommentar
alftore Skrevet 2. juni 2005 Del Skrevet 2. juni 2005 (endret) Hei ExecuteScalar returnerer objektet og ikke en reader prøv dette object iResult = cmd.ExecuteScalar(); if(iResult != null && iResult == Passord) // Correct loging else // Incorrect login men en ekstra sikkerhet bør legge inn er å dobbeltsjekke brukernavnet public void TestBruker_Klikk() { string Brukernavn = FormsAuthentication.HashPasswordForStoringInConfigFile(txtBrukernavn.Text,"md5"); string Passord = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPass.Text + txtBrukernavn.Text,"md5"); bool LoginOK = false; using(OdbcConnection con = new OdbcConnection(ConnStr)) using(OdbcCommand cmd = new OdbcCommand("SELECT Username, Password FROM Brukere WHERE Username=@Username", con)) { cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = Brukernavn.Trim(); cmd.Parameters.Add("@Password", OdbcType.VarChar, 32).Value = Passord.Trim(); con.Open(); OdbcDataReader reader; reader = cmd.ExecuteReader(); if(reader.read()) { string strPwd = Convert.ToString( reader["Password"] ); string strUsername = Convert.ToString( reader["Username"] ); if(strPwd == Passord && strUsername == Brukernavn) loginOK = true; } } if (LoginOK) { EtterText.InnerHtml = "Correct login"; } else { EtterText.InnerHtml = "Uncorrect login"; } } Endret 2. juni 2005 av alftore Lenke til kommentar
Doffar Skrevet 2. juni 2005 Forfatter Del Skrevet 2. juni 2005 Takk for hjelpen, men jeg får det ikke helt til å fungere. Nå har jeg puttet koden jeg fikk inn i scriptet, men uansett hva jeg skriver inn så får jeg at login er correct. Ser du hva som er feil her? Har gjort litt forandring slik at brukernavn ikke blir kryptert. public void TestBruker_Klikk(object sender, EventArgs e) { string Brukernavn = txtBrukernavn.Text; string Passord = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPass.Text,"md5"); bool LoginOK = false; using(SqlConnection con = new SqlConnection(ConnStr)) using(SqlCommand cmd = new SqlCommand("SELECT Username, Password FROM Brukere WHERE Username=@Username", con)) { cmd.Parameters.Add("@Username", SqlDbType.VarChar, 255).Value = Brukernavn.Trim(); cmd.Parameters.Add("@Password", SqlDbType.VarChar, 32).Value = Passord.Trim(); con.Open(); SqlDataReader reader; reader = cmd.ExecuteReader(); if(reader.Read()) { strPwd = Convert.ToString( reader["Password"] ); strUsername = Convert.ToString( reader["Username"] ); if(strPwd == Passord && strUsername == Brukernavn) LoginOK = true; } } if (LoginOK = true) { EtterText.InnerHtml = "Correct login"; } else { EtterText.InnerHtml = "Uncorrect login"; } } Lenke til kommentar
Manoz Skrevet 8. juni 2005 Del Skrevet 8. juni 2005 Du har sikkert fått det til nå, men uansett så mangler det bare en "=" i denne "if (LoginOK = true) {". Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå