Antworten auf deine Fragen:
Neues Thema erstellen

Probleme mit login bootstrap

Alucard26

Nicht mehr ganz neu hier

Ich habe ein Login Formular erstellt welches so aus sieht:
PHP:
  <div class= "input-group">
    <form action="anmelden.php"  method="post" class="form-inline">
  <div class="input-group">
    <label for="nickname"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></label>
    <input type="text" class="form-control" id="nickname" placeholder="Benutzername">
  </div>
  <div class="input-group">
    <label for="passwort"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></label>
    <input type="password" class="form-control" id="passwort" placeholder="Password">
  </div>
  <button type="submit" class="btn btn-default">Anmelden</button>
</form>
     <a href="registrierung.php">Jetzt registrieren</a>
       </div>

und die anmelden.php sieht so aus:
PHP:
<?php
$mysqli = new mysqli("localhost", "root", "noemi199", "sozial")
            or die ("Fehler im System");
include("functions.php");

session_start();
   
if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
        // Falls der Nickname und das Passwort übereinstimmen..
        $sql = "SELECT
                        user_id
                FROM
                        user
                WHERE
                        nickname = ".trim($_POST['nickname'])." AND
                        passwort = ".md5($_POST['passwort'])."
               ";
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        // wird die ID des Users geholt und der User damit eingeloggt
        $row = mysql_fetch_assoc($result);
        // Prüft, ob wirklich genau ein Datensatz gefunden wurde
        if (mysql_num_rows($result)==1){
             doLogin($row['user_id'], isset($_POST['Autologin']));
             echo "<h4>Willkommen ".$_SESSION['nickname']."</h4>\n";
             echo "Sie wurden erfolgreich eingeloggt.<br>\n".
                  "Zur <a href=\"seite1.php\">Startseite</a>\n";
        }
        else{
             echo "Sie konnten nicht eingeloggt werden.<br>\n".
                  "Nickname oder Passwort fehlerhaft.<br>\n".
                  "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
        }
    }
?>

wenn ich mich jetzt anmelde komme ich auf anmelden.php und die ist leer! Ich möchte aber auf eine andere Seite Weitergeleitet werden,
kann mir jemand sagen wo mein Fehler ist!
 

Scheinbar gibt die function doLogin nichts zurück. Was soll die eigentlich machen?
Ich würde die Zeile mal auskommentieren, dann sollte der Text darunter ausgegeben werden.
oder leite direkt mit
PHP:
header("Location: ziel.seite");
um.

Was passiert, wenn du dich falsch anmeldest?
 
2 Dinge:

1) Du kommst gar nicht in die Login-Schleife.
Du hast zwei Bedingungen: Einmal: POST['submit'] muss vorhanden sein und POST['submit'] muss "Einloggen" sein.
Aus deinem Formular-Code ist nicht ersichtlich woher das "Einloggen" kommen soll.

2) Nimm nicht MD5 her um das Passwort zu speichern.
MD5 ist nicht wirklich sicher und es lässt sich sehr leicht über sog. "rainbow tables" das echte Passwort herausfinden.
Es gibt in PHP integriert eine Funktion: " ". Diese kann dir einen Hash erzeugen. Mit der dazugehörigen Funktion " " kannst du dann ein eingegebenes Passwort überprüfen.

Weitere Informationen mit ausführlicher Dokumentation gibt's hier:
Ich zitiere hier mal die Aussage über MD5, SHA1 etc:

Weil moderne Computer diese Hashalgorithmen leicht brechen können, werden diese von Sicherheitsspezialisten nicht für die Speicherung von Passwörtern empfohlen.
 
Stimmt, das habe ich heute früh ganz übersehen. Ist schon so lange her, dass ich mit PHP was zu tun hatte.
Habe es aber zum Anlass genommen, wieder ein wenig damit zu spielen.
Der folgende code funktioniert bei mir, allerdings ohne Verschlüsselung, das habe ich jetzt mal ausgelassen. Die Fehlerprüfung ist sicher auch noch ausbaufähig.
Mein Beispiel ist auf meine DB abgestimmt, wenn du ihn verwenden möchtest, musst du nur die DB-Namen und -Felder anpassen.
hoffe, es funktioniert auch bei dir.
PHP:
<?php
        $nick = $_POST['nickname'];
        $pass = $_POST['passwort'];
       
        $data =  mysqli_connect("localhost", "root", "", "test")
            or die ("Fehler im System");

session_start();

// Prüfen, ob Name und PW übergeben werden
if(isset($nick) AND $pass){

      

        //datenbankfelder und Tabellenname an deine datenbank anpassen !!!
        $sql = "SELECT  name, password FROM login  WHERE name ='" .trim($nick)."'". " AND password = '".($pass). "' ";
        Echo $sql;
        echo "<br>\n";
        $result = mysqli_query($data, $sql)OR die("<pre>\n Fehler: ".$sql."</pre>\n".mysql_error());
        // wird die ID des Users geholt und der User damit eingeloggt
        // Prüft, ob wirklich genau ein Datensatz gefunden wurde
        $row_cnt = mysqli_num_rows($result);
        echo "Anzahl Ergebnisse ".$row_cnt;
       
        if ($row_cnt==1){
          
           // Was soll geschehen, Seite aufrufen, oder deine Funktion
           //header("Location: start.php");
           //  doLogin($row['user_id'], isset($_POST['Autologin']));
             echo "<h4>Willkommen ".$nick."</h4>\n";
             echo "Sie wurden erfolgreich eingeloggt.<br>\n".
                  "Zur <a href=\"seite1.php\">Startseite</a>\n";
        }
        else{
             echo "Sie konnten nicht eingeloggt werden.<br>\n".
                  "Nickname oder Passwort fehlerhaft.<br>\n".
                  "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
        }
    }
    else {
    echo "kein isset";
    }
?>
 
@Chris_EDI
Dein Code sollte funktionieren, und ist für die Einarbeitung und Übung bestimmt ganz hilfreich.
Dennoch rate ich DRINGENDS davon ab ihn zu verwenden. Als Stichwort nenne ich SQL-Injection was deiner Anwendung im Anschluss bestimmt nicht gut tut ;) Dasselbe gilt natürlich auch für den Code im ersten Post.
Als Benutzername könnte jemand einfügen:
; DROP TABLE login;
Bitte nach Prepared Statement googlen und erst danach live gehen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
119.004
Beiträge
1.540.321
Mitglieder
68.239
Neuestes Mitglied
OldMac
Oben