Login Formular

Status
Nicht offen für weitere Antworten.

javadoc

Mitglied
hallo,

habe da ein kleines Problem mit einem HTMl Login Formular.

Möchte per Servlet den Benutzernamen und das Passwort überprüfen.

Das Problem ist, dass das ResultSet nur die erste Zeile ausließt. Also sobald ich den 2. Namen und Passwort der Datebank eintrage arbeitet er den else Zweig ab und springt wieder zum Login. Es klappt nur mit dem ersten Eintrag.

Kann mir jemand helfen?
 

javadoc

Mitglied
hier der Code:


Code:
while(rs.next()) {
          boolean login = false;
          if (user.equals(rs.getString("username")) && (pass.equals(rs.getString("password")))) {
          login = true;
          out.println("Herzlich willkommen " + user);         
          }
          else {
          login = false;
          rq = conn.getRequestDispatcher("/login.html");
          rq.forward(req, res);
          }

user steht für String user = req.getParameter("username"); passwort entsprechend
Habe ich nur einen Datenbankeintrag, dann geht es. Füge ich einen zweiten dazu, dann geht es nicht mehr und der else Zweig wird ausgeführt.

[/code]
 
S

SlaterB

Gast
der else ist auch Quatsch,
du musst erst per while die ganze Liste durchlaufen, wenn gefunden dann login, z.B. irgeneine boolean-Variable setzen + Schleife abbrechen,
sonst nix tun -> Rest der Liste anschauen,

erst NACH der Schleife hast du die sichere Information,
dass der User nicht der DB ist (falls die boolean-Variable nicht gesetzt wurde),
dann kannst du zum Login weiterleiten
 

javadoc

Mitglied
Habs jetzt genau so gemacht. Schleife durchlaufen. Login = true gesetzt. nach der schleife überprüfe ich die parameter, aber es geht trotzdem nur beim 1.eintrag.
 
S

SlaterB

Gast
hier mal eine Schleife: goto first Posting, read first Answer
 

javadoc

Mitglied
Ok sorry.

Code:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.sql.ResultSet;


 //jstl.jar wird gebraucht f¸r jsp.jstl....

public class Login extends HttpServlet {

   
  public void doGet(HttpServletRequest req, HttpServletResponse res)
                               throws ServletException, IOException {
 // }
  //  doPost(req,res);
	/*public void doPost(HttpServletRequest req, HttpServletResponse res)
				throws ServletException, IOException {*/
    Connection con = null;
    Statement stmt = null;
    ResultSet rs   = null; 
     boolean login = false;
   

    RequestDispatcher rq = null;
    res.setContentType("text/html");
    PrintWriter out = res.getWriter(); 
    ServletContext conn = getServletContext();
    
    final String dbHost = "jdbc:mysql://localhost:3306/";
    final String dbTable = "login";
    final String dbUser = "root";
    final String dbPassword = "root"; 
   
   
    try {
      // Load (and therefore register) the mysql Driver
      Class.forName("com.mysql.jdbc.Driver"); 
     
      // Get a Connection to the database
    //  con = DriverManager.getConnection(
   //   "jdbc:mysql://localhost/login?user=root&password=root");
      con = DriverManager.getConnection(dbHost + dbTable, dbUser, dbPassword); 
      // Create a Statement object
      stmt = con.createStatement();
      
      // Execute an SQL query, get a ResultSet
      
      // Display the result set as a list
  
      rs = stmt.executeQuery("Select * from logindata");
      
      while(rs.next()) {
      login = true;
      
      }
      
      if ((req.getParameter("username") == rs.getString("username")) && (req.getParameter("password") == rs.getString("password"))) {
          
      out.println("Herzlich willkommen " + req.getParameter("username"));
        
      }

      else {
      login = false;
      rq = conn.getRequestDispatcher("/login.html");
      rq.forward(req, res);
      } 
         
        
     
      
      
    }
    catch(ClassNotFoundException e) { 
      out.println("Couldn't load database driver: " + e.getMessage());
    }
    catch(SQLException e) { 
      out.println("SQLException caught: " + e.getMessage());
    }
    finally {
      // Always close the database connection.
      try {
        if (con != null) con.close();
      }
      catch (SQLException ignored) { }
    }
    
    
  }
 
}
 
S

SlaterB

Gast
Spitzenleistung, eine Schleife die nichts macht außer ständig eine Variable auf true zu setzen,
das ist ja so doof dass ich das tatsächlich noch extra erwähnen muss, sorry

so nun mal etwas korrekter:

boolean korrekterLogin = false;
while (ResultSet durchlaufen) {
if (Parameter passt zu aktuellen DB-Eintrag) {
korrekterLogin =true;
break; // Abbruch der Schleife, restliche DB-Einträge egal
} else {
// nix zu tun
}
}


if (korrekterLogin) {
// alles klaro
} else {
// zum Login weiterleiten
}
 

javadoc

Mitglied
Mann du bist ja echt ein verdammt netter Idiot.

Ich hatte vorher ja genau das, was du mir hier schreibst. Also nicht in dem Posting drüber, aber eine Weile vorher.

Danke für die Antwort und danke für die nette Anrede.
 
M

maki

Gast
"doof" ist meiner Meinung nach sehr diplomatisch, ich hätte eher "dumm" als Bezeichnung gewählt, insbesondere das der TS dem einzigen der ihm zu helfen bereit war auch noch beleidigt.

Vom Quellcode ganz zu schweigen, eine Beleidigung für Auge & Verstand..
 

javadoc

Mitglied
Warum gibt es das Forum hier? Damit einem geholfen wird oder?

Dass er mir geholfen hat ist ja sehr nett. Danke. Aber so Kommentare wie von euch beiden brauche ich mir ja wohl nicht anhören oder?

Das widerspricht dem Sinne eines Forums total.

Ich dachte, dass ich hier mit normalen Menschen zu tun habe. Aber dem ist leider nicht so.
 
M

maki

Gast
Wenn etwas abgrundtief schelcht ist, dann darf man das wohl sagen.

Wie gesagt, ich fand "doof" sehr diplomatisch.

Für den miesen Code den du schreibst solltest du dir ein dickeres Fell zulegen, wirst das noch oft hören wenn du so weiter schreibst.

Am beste suchst du dir mal einen Anfängerkurs, so ist dir im Moment nicht zu helfen.
 

javadoc

Mitglied
Außerdem hatte ich den Code auch schon. Hier kann ich mich jetzt zwar mit dem 2. Eintrag einloggen, aber mit dem ersten nicht.
 
S

SlaterB

Gast
tja, wenn du mich als normalen Menschen angesehen hättest,
würde ich dir weiterhelfen,
so legst du anscheinend keinen Wert darauf..
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben