Login Für Programm

courtoisjr

Mitglied
Moin Leute,

ich muss für ein Fach ein Programm schreiben. Dabei handelt es sich um ein Fitnessprogramm, das Trainingspläne erstellen kann. Bin auch schon fast fertig damit und muss nur noch einige Fehler korrigieren. Wie z.B., dass beim anlegen eines Accounts, der Benutzername beliebig Oft benutzt werden kann. Oder auch, dass wenn man kein Passwort eingibt, keine Fehlermeldung kommt.

Schon mal vielen Dank für eure Hilfe!
 

httpdigest

Top Contributor
Diese Fragen sind nicht weit entfernt von "wie mache ich, dass mein Programm funktioniert?"
Sie sind viiiiieeeel zu generisch. Welches Framework verwendest du? Wie sieht dein Code bisher aus? Wo genau hast du Probleme, diese Aspekte zu integrieren? Du musst seeeeehr viel konkreter werden.
 

mihe7

Top Contributor
Das sind keine Fragen, das sind Anforderungen.

Wenn Du wissen willst, wie das funktioniert, solltest Du uns schon etwas mehr erzählen, sonst kann man auch nur allgemeine Antworten geben ("bevor Du einen neuen Account anlegst, musst Du nachsehen, ob es bereits einen Account mit dem Benutzernamen gibt").

Was für eine Art Programm ist das (Konsole, Android, Web-Anwendung mit Spring/Java EE?) Wo werden die Benutzer verwaltet? (Datenbank?)

Nachtrag: s. Antwort von @httpdigest
 

courtoisjr

Mitglied
ich benutze Netbeans und die Nutzer, (sowie auch alles andere) werden selbstverständlich in eine Datenbank eingetragen. Um genauer zu sein benutze ich dafür HsqlDb. Habe es schon soweit hinbekommen, dass ich Accounts anlegen kann, und diese auch in die Datenbank eingeschrieben werden. Dazu ist es möglich sich einzuloggen und das eigentliche Programm zu nutzen (Trainingspläne zu generieren, zu bearbeiten und komplett neue zu erstellen). Alles wurde mit der objektorientierten Programmiersprache Java geschrieben.

So nun zu meiner Frage.
Wenn ich einen neuen Account anlege, kann ich einen bereits verwendeten Benutzernamen, der schon in der DB drin ist, verwenden. Das soll gemieden werden, nur habe ich nicht wirklich eine Ahnung wie ich das gehen soll. In der Theorie schon, nur leider nicht in der Praxis
 
X

Xyz1

Gast
Du musst es prüfen, ob es den Benutzernamen schon gibt - und weiterhin muss das Passwort x Zeichen lang sein und es muss verschlüsselt und gesalzen gespeichert werden und das am besten mehrmals.;)
 

httpdigest

Top Contributor
Du hast immer noch nicht gesagt, was das technologisch gesehen genau für eine Anwendung ist.
Dass das Java ist, ist ja wohl klar... Und, dass du NetBeans als IDE verwendest, ist irrelevant.
Also hier die Antworten:
1. "Wie kann ich verhindern, dass beim Anlegen eines Accounts der Benutzername beliebig oft genutzt werden kann?"
-> Indem du prüfst, ob es den Benutzernamen schon gibt (hat ja @mihe7 schon gesagt)
2. "Wie kann ich erreichen, dass, wenn man kein Passwort eingibt, eine Fehlermeldung kommt?"
- > Indem du prüfst, ob kein Passwort eingegeben wurde, und in diesem Fall eine Fehlermeldung anzeigst.
 
X

Xyz1

Gast
Sy, ich meinte mind. x Zeichen lang - und ich befürchte, das was Du zur Zeit als Login bezeichnest, kann man noch nicht so nennen....;)
 

courtoisjr

Mitglied
Java:
public class hsql_Verbindung {
   
    private Connection con;
   
    public hsql_Verbindung(){
          try {
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
        } catch (ClassNotFoundException exc) {
            exc.printStackTrace();
            System.exit(-1);
        }
         
          try{
            con = DriverManager.getConnection("jdbc:hsqldb:file:data/Project;ifexists=true","SA","");
                  
        }  
        catch (SQLException ex) {
            Logger.getLogger(Hauptfenster.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   
   
    public Connection getCon(){
        return this.con;
    }

Java:
public class Hauptfenster extends javax.swing.JFrame {

    Connection conn=null;
    PreparedStatement pst=null;
    ResultSet rs=null;
    DefaultTableModel dm;
    static hsql_Verbindung verbindung;
    ArrayList<Übungen> uebungsliste;
 

courtoisjr

Mitglied
Java:
    public PreparedStatement getProfildaten() {
        try {
            return con.prepareStatement("Select Benutzername, Passwort, Körpergrösse, Körpergewicht, Geschlecht, Alter, BMI"
                    + " From Login where Benutzername=? and Passwort=?");
        } catch (SQLException ex) {
            Logger.getLogger(hsql_Verbindung.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
   
    public PreparedStatement createProfilstatement () {
        try {
            return con.prepareStatement("INSERT INTO Login(Benutzername, Passwort, Körpergrösse, Körpergewicht, Geschlecht, Alter, BMI)" +
                    "VALUES (?,?,?,?,?,?,?)");
        } catch (SQLException ex) {
            Logger.getLogger(hsql_Verbindung.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
 

mihe7

Top Contributor
public class Hauptfenster extends javax.swing.JFrame
War ja klar.

Java:
public boolean hasUser(String username) {
    try(PreparedStatement stmt = con.prepareStatement("SELECT 1 FROM Login WHERE Benutzname=?")) {
        stmt.setString(1, username);
        try(ResultSet rs = stmt.executeQuery()) {
            return rs.next();
        }
    }
}
 

Robat

Top Contributor
public class Hauptfenster extends javax.swing.JFrame {

Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
DefaultTableModel dm;
static hsql_Verbindung verbindung;
ArrayList<Übungen> uebungsliste;
Deine Klasse, die Hauptfenster heißt, macht momentan alles für dich (zumindest wenn man den Variablen glauben schenken mag). Trenn Logik, View und Model strikt von einander, dann bekommst du später weniger Probleme und kannst leichter Fehler finden.

Die View (also dein "Hauptfenster") muss doch nicht wissen ob die Daten nun aus einer Datenbank, einer Datei, ... o.ä. kommen. Genauso muss die View auch nicht die Daten halten / administrieren.

Ach ja: Warum ist die hsql_Verbindung static?
 

mihe7

Top Contributor
X

Xyz1

Gast
Aber was soll ich machen, wenn der Prof. uns solch eine Aufgabe stellt?
Und was wäre Deine konkrete Frage? Schaue mal in meine Siggi
... ich schaue mal nach.... Genaue Problembeschreiben, SSCCE, wie ist der Sollzustand und wie ist der Istzustand sein, Codeausschnitte und Fehlermeldungen....

Nicht statisch bedeutet, in einem (noch) statischen Teil Deiner Anwendung versuchst Dus mit einer Variablen. Das geht natürlich so nicht, anschauen: Klassen und Objekte....
 

mihe7

Top Contributor
Man könnte es eher mit einem Selbststudium vergleichen
Das bringt ein Studium so mit sich, dass man sich das ein oder andere auch mal selbst aneignen muss.

Zum Thema: wenn ich es richtig sehe, ist Deine main-Methode auch noch in Hauptfenster?
Java:
public static void main(String[] args) {
    hsql_Verbindung verbindung = new hsql_Verbindung();
    ... new Hauptfenster(verbindung);
}
Dürfte wohl funktionieren, oder?
 

Neue Themen


Oben