2017-04-08 2 views
-1

Ich bin neu bei ASP.net und derzeit versäumt, ein einfaches funktionierendes Login-Formular erstellen. Nachdem ich die Verbindung zu meiner Datenbank hergestellt hatte, wollte ich, dass die Funktion überprüft, ob eine bestimmte Kombination aus Benutzername und Passwort in der Datenbank existiert. Aufgrund der Tatsache, dass ich noch nicht die Seite "Mitgliederzone" erstellt habe, soll es nichts tun, wenn die Daten gültig sind und im umgekehrten Fall "Login fehlgeschlagen" zurückgegeben wird. Aus irgendeinem Grund funktioniert es nicht. Ich wäre froh, wenn mir jemand helfen könnte, das Problem zu verfolgen.Login-Formular in ASP.net funktioniert nicht

protected void Login_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new 
SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString()); 
    string query = "SELECT * FROM users WHERE username='" + UserName.Text + 
"' AND password='" + Password.Text + "' "; 
    SqlCommand cmd = new SqlCommand(query, con); 
    string output = cmd.ExecuteScalar().ToString(); 

    if (output == "1") 
    { 
     //Creating a session for the user 
     Session["user"] = UserName.Text; 
     Response.Redirect(""); 
    } 
    else 
     Response.Write("Login failed."); 

} 
+0

Was ist der Fehler. Sie sollten den Debugger verwenden, um das herauszufinden. – siddstuff

+0

Es gibt keinen Fehler, aber die Seite lädt sich nur neu, ohne dass irgendetwas anderes passiert. –

+0

Sie sollten nach parametrisierten Abfragen und SQL-Injection suchen. Ihr Code ist so anfällig, wie er jetzt ist. – VDWWD

Antwort

1

Sie haben SELECT * FROM in der Abfrage und Sie verwenden ExecuteScalar Methode zu überprüfen, ob alles zurückgegeben.

Sie sollten SELECT COUNT(*) FROM verwenden, um die Anzahl der Zeilen in der Tabelle für angegebenen Benutzername und Kennwort zu erhalten.

Eine weitere Sache, die in Ihrem Code nicht richtig ist, ist die Abfragegenerierung. Die Verwendung der parametrisierten Abfrage ist der empfohlene Ansatz.

protected void Login_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString()); 

    string query = "SELECT COUNT(*) FROM users WHERE [email protected] AND [email protected]"; 
    SqlCommand cmd = new SqlCommand(query, con); 
    cmd.Parameters.Add(new SqlParameter("@userName", UserName.Text)); 
    cmd.Parameters.Add(new SqlParameter("@password", Password.Text)); 
    con.Open(); 
    string output = cmd.ExecuteScalar().ToString(); 

    if (output == "1") 
    { 
     //Creating a session for the user 
     Session["user"] = UserName.Text; 
     Response.Redirect(""); 
    } 
    else 
    { 
     Response.Write("Login failed."); 
    } 

Dies sollte Ihr Problem lösen.

0

Sie haben vergessen Verbindung zu öffnen, bevor ExecuteScalar Ausführung()

protected void Login_Click(object sender, EventArgs e) 
{ 
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString()); 

string query = "SELECT COUNT(*) FROM users WHERE [email protected] AND [email protected]"; 
SqlCommand cmd = new SqlCommand(query, con); 
cmd.Parameters.Add(new SqlParameter("@userName", UserName.Text)); 
cmd.Parameters.Add(new SqlParameter("@password", Password.Text)); 

//Add Below line and test your code. 
con.Open(); 

string output = cmd.ExecuteScalar().ToString(); 

if (output == "1") 
{ 
    //Creating a session for the user 
    Session["user"] = UserName.Text; 
    Response.Redirect(""); 
} 
else 
{ 
    Response.Write("Login failed."); 
} 
Verwandte Themen