Matthias Apsel: Problem beim Datenbankconnect

Beitrag lesen

Hallo Dennis Knabe,

Problem beim Datenbankconnect

Gibts auch ne Frage dazu?

Hier ein paar Hinweise, die nichts mit dem Connect zu tun haben:

<html>

Möglicherweise fehlt der Doctype sowie einige weitere Angaben, siehe HTML-Grundgerüst.

        <form method="post" action="">

Wenn du die Formulardaten an die Seite selbst schicken möchtest, kann das action-Attribut entfallen.

            <table border = 3>
                <tr><td colspan = 2 align = center>Anmeldung</td></tr>

Tabellenlayout? Ernsthaft? Für die Daten selbst könnte ich mit der Semantik als Tabelle durchaus noch mitgehen, aber die Überschrift und der Absendebutton gehört definitiv nicht in eine Tabelle.

Es gehört zum guten Stil, Attributwerte in Anführungszeichen zu setzen, auch wenn das nicht notwendig ist. Wenn du dir angewöhnst, immer Anführungszeichen zu verwenden, stolperst du nicht an Stellen, wo sie notwendig werden.

align ist ein missbilligtes Attribut. Verwende die CSS-Eigenschaft textalign.

                <tr><td>Nachname</td><td><input type="text" name="nachname"></td></tr>
                <tr><td>Vorname</td><td><input type="text" name="vorname"></td></tr>
                <tr><td>Passwort</td><td><input type="passwort" name="passwort"></td></tr>

Das Formular ist für Menschen, die auf assistive Technologien angewiesen sind, nicht benutzbar. Es fehlen label-Elemente.

type = text ist der Defaultwert, kann also weg.

<tr><td><label for="nachname">Nachname</label></td><td><input id="nachname" name="nachname"></td></tr>
                <tr><td><input type="submit" name="submit" value="login"></td></tr>

type = submit ist der defaultwert, kann also weg.

Für konkretere Hilfe siehe das brandneue Tutorial Formulargestaltung in unserem Wiki.

            $nachname=$_POST['nachname'];
            $vorname=$_POST['vorname'];
            $passwort=$_POST['passwort'];

Das Umkopieren ist nicht notwendig.

       or die("Serververbindung fehlgeschlagen");

Wenn dieser Fehler auftritt, kann der Nutzer in aller Regel nichts dafür und auch nichts dagegen tun. Deshalb sollte man ihn mit dieser Information verschonen. Viel wichtiger ist, dass du eine Info bekommst.

                    $sql = "SELECT Vorname, Nachname, Passwort
                            FROM logindaten
                            WHERE Vorname = '$vorname'
                            AND Nachname = '$nachname'
                            AND Passwort = '$passwort';";

Hier werden Eingabedaten ungefiltert an die DB weiter gereicht. Was, wenn ein böswilliger Mensch als Passwort einen SQL-Befehl verwendet, der ihm uneingeschränkten Zugriff erlaubt? Beachte den Kontextwechsel.

PDO ist ggf. auch der Nutzung von mysqli_ vorzuziehen, aber dazu können andere mehr sagen.

Bis demnächst
Matthias

--
Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.