Formular nach erfolgreichem Login ausblenden


funtkionermal

Grünschnabel
Moin ! wie kann ich vorgehen wenn ich, sobald ich auf eine Seite weitergeleitet werde, dessen Inhalt ausblenden will, der zuvor noch da war (Loginformular) ? Ich weiß nicht recht wie ich vorgehen soll, könnt ihr mir Ansätze geben?

Das ist meine login.jsp

HTML:
    <form action="LoginServlet" method="post">
        Name: <input type="text" name="name"><br>
        Passwort: <input type="password" name="password"><br><br>
        <button type="submit">Abschicken</button>
    </form>

Und in meinem Servlet wird geprüft ob alle eingaben korrekt sind. Wenn ja, werde ich wieder in die login.jsp weitergeleitet

Javascript:
if(agb != null && datenschutzbestimmungen != null && alterKorrekt && mailKorrekt &&
                telefonKorrekt && passwordNeu.equals(passwordWdh)) {
            message += "Alle Eingaben korrekt - Benutzer angelegt.";
            benutzer.setAlter(alter);
            benutzer.setEmail(email);
            benutzer.setTelefon(telefon);
            benutzer.setPasswort(passwordNeu);
            session.setAttribute("benutzer", benutzer);
            session.setAttribute("message", message);
            request.getRequestDispatcher("login.jsp").forward(request, response);

Jetzt habe ich überhaupt keinen Plan, wie ich (mithilfe einer BenutzerTag.java Klasse) das LoginFormular in der login.jsp ausblenden kann...
 

Sempervivum

Erfahrenes Mitglied
1. Möglichkeit: Einfach nach dem Login auf eine neue Seite gehen, indem Du deren URL als action angibst.
Es könnte sein, dass Du noch weitere Inhalte auf der Seite hast, die Du dann verdoppeln müsstest. Das könnte ein Grund sein, die selbe Seite zu laden. In dem Fall empfehle ich
2. Möglichkeit: I. allg. ist bekannt, ob eine Seite neu oder durch einen Submit geladen wurde. (Gängig: Dem Submit-Button einen Namen geben, dann kannst Du den POST-Parameter, der dazu gehört, abfragen.) Dann kannst Du davon abhängig in PHP mit einem einfachen if das Formular anzeigen oder nicht.
 
Zuletzt bearbeitet:

funtkionermal

Grünschnabel
die if abfrage würde ja ungefähr so aussehen
Javascript:
if (session.getAttribute("benutzer") != null) {
    // Blende das Formular aus
} else {
    // Formular belassen wie es ist
}
Ich verstehe nicht, warum du die Sichtbarkeit des Formulars vom Submit oder Aktualisieren der Seite abhängig machst. Zum Verständnis: Ich mache das Formular solange unsichtbar, wie der Benutzer in einer Session gespeichert ist.
Und überhaupt: Wie greife ich dann auf den Submit-button zu, wenn ich ihm einen Namen gebe (<input type="button" name="beispiel"...>)?
 

Sempervivum

Erfahrenes Mitglied
Wenn er einen Namen hat, ist er als POST-Parameter verfügbar, jedenfalls wenn er so aussieht:
Code:
<input type="submit" name="submit"...>

Allerdings habe ich etwas anderes nicht bedacht: Du willst ja das Formular dann unsichtbar machen, wenn das Login erfolgreich war. Insofern war mein Ansatz mit erstmalig Laden vs. durch Submit laden doch nicht zielführend. Aber wenn dir die Info, dass das Login erfolgreich war, im PHP vorliegt, kannst Du doch die Anzeige des Formulars problemlos davon abhängig machen?
 

Sempervivum

Erfahrenes Mitglied
Ups, ich habe nicht genau genug gelesen und war davon ausgegangen, dass es sich um PHP handelt. Vom Prinzip her müsste es aber bei JSP genau so funktionieren:
Code:
wenn (login_nicht_korrekt ODER (POST-Parameter "submit" existiert nicht) Loginformular ausgeben
 

funtkionermal

Grünschnabel
Ja und genau das ist meine Frage. Ich will hier nicht nach Lösungen schnorren versteh mich nicht falsch, aber wie mache ich eben dieses "loginnichtkorrekt" in einer separaten BenutzerTag.java Klasse?
 

Sempervivum

Erfahrenes Mitglied
Die Information ob das Login korrekt ist, hast Du doch in dem Code, den Du in deinem Eingangsposting gepostet hast:
Code:
if(agb != null && datenschutzbestimmungen != null && alterKorrekt && mailKorrekt &&
telefonKorrekt && passwordNeu.equals(passwordWdh)) {
message += "Alle Eingaben korrekt - Benutzer angelegt.";
benutzer.setAlter(alter);
benutzer.setEmail(email);
benutzer.setTelefon(telefon);
benutzer.setPasswort(passwordNeu);
session.setAttribute("benutzer", benutzer);
session.setAttribute("message", message);
request.getRequestDispatcher("login.jsp").forward(request, response);
    loginCorrect = true;
} else {
    // login nicht korrekt
    loginCorrect = false;
}
if (!loginCorrect || !(POST-Parameter "submit" gesetzt)) {
    // das Formular ausgeben
}
Leider nur Pseudocode weil ich die Syntax von JSP nicht kenne.
 

Sempervivum

Erfahrenes Mitglied
PS: Liege ich jetzt wieder falsch? Der Code scheint mir eher eine Neuanmeldung zu sein. Besser warten bis sich jemand mit erweiterten Kenntnissen, auch für JSP, meldet.
 

funtkionermal

Grünschnabel
login.jsp:
HTML:
    <form action="LoginServlet" method="post">
        Name: <input type="text" name="name"><br>
        Passwort: <input type="password" name="password"><br><br>
        <button type="submit">Abschicken</button>
    </form>

Javascript:
        Benutzer benutzer = (Benutzer) session.getAttribute("benutzer");
        

        if(agb != null && datenschutzbestimmungen != null && alterKorrekt && mailKorrekt &&
                telefonKorrekt && passwordNeu.equals(passwordWdh)) {
            message += "Alle Eingaben korrekt - Benutzer angelegt.";
            benutzer.setAlter(alter);
            benutzer.setEmail(email);
            benutzer.setTelefon(telefon);
            benutzer.setPasswort(passwordNeu);
            session.setAttribute("benutzer", benutzer);
            session.setAttribute("message", message);
            request.getRequestDispatcher("login.jsp").forward(request, response);
            
        }
        
        if (agb == null|| datenschutzbestimmungen == null) {
            message1 += "Checkboxen sind nicht checked.";
            session.setAttribute("message1", message1);

            request.getRequestDispatcher("profil.jsp").forward(request, response);

Ja es ist quasi eine Neuanmeldung. Naja ich weiss halt nicht wie ich über methoden einer anderen Java Klasse (BenutzerTag)das Loginformular meiner login jsp beeinflussen kann, aber danke