2. Passwort überprüfen

CreativPur

Erfahrenes Mitglied
Hi,
ich habe ein Login, wo ich ein 2. Passwort zur Überprüfung einbinden möchte..

Form
HTML:
<form action="https://www.XXXXX/login.php?login2" method="post">
                    <div class="form-floating mb-3">
                        <input type="text" class="form-control" name="mitarb_nachname" placeholder="Ihr Nachname" required>
                        <label for="floatingNachname">Ihr Nachname</label>
                    </div>
                    <div class="form-floating mb-3">
                        <input type="password" class="form-control" name="mitarb_passwort" placeholder="Ihr Mitarbeiter-Passwort" required>
                        <label for="floatingPassword">Ihr Mitarbeiter-Passwort</label>
                    </div>
                    <div class="form-floating mb-3">
                        <input type="email" class="form-control" name="email" placeholder="Email-Adresse" required>
                        <label for="floatingEmail">Email-Adresse</label>
                    </div>
                    <div class="form-floating mb-3">
                        <input type="password" class="form-control" name="passwort" placeholder="Passwort" required>
                        <label for="floatingPassword">Passwort</label>
                    </div>
                    <hr />
                    <div class="form-floating mb-3">
                        <div style="display:block">
                            <label><input type="checkbox" name="angemeldet_bleiben2" value="1" checked> Angemeldet bleiben</label>
                        </div>
                    </div>
                    <div class="d-grid" align="left">
                        <button class="btn btn-primary rounded-pill btn-lg" type="submit"><i class="bi bi-door-open"></i>&nbsp;&nbsp;Login</button>
                        <br />
                        <a href="passwortvergessen.php">Passwort vergessen ?</a>
                    </div>
                </form>

Überprüfung mit einem Passwort....
PHP:
require_once("inc/config.inc.php");
if(isset($_GET['login2'])) {
    $email = $_POST['email'];
    $passwort = $_POST['passwort'];
    $nachname = $_POST['mitarb_nachname'];
    $mitarb_passwort = $_POST['mitarb_passwort'];
    $statement = $pdo->prepare("SELECT * FROM login WHERE email = :email");
    $result = $statement->execute(array('email' => $email));
    $user = $statement->fetch();
    
    //Überprüfung des Passworts
    if ($arzt !== false && password_verify($passwort, $user['passwort'])) {
        $_SESSION['userid'] = $user['id'];
    header("location:https://www.XXXXXXXX/index.php?lg=de&nachname=$nachname&mitarb_passwort=$mitarb_passwort");
        exit;
    }
     else {
        $errorMessage = "<h5 class='red'>E-Mail oder Passwort war ungültig<h5><br><br>";
    }
}
if(isset($errorMessage)) {
    echo $errorMessage;
}

Nun habe ich ein 2. Passwort versucht zur Überprüfung einzubinden...
PHP:
//Überprüfung des Passworts
    if ($user !== false && password_verify($passwort, $user['passwort'])) {
    if ($user !== false && password_verify($mitarb_passwort, $user['mitarb_passwort'])) {
        $_SESSION['id'] = $user['id'];       
header("location:https://www.XXXXXXXXX/index.php?lg=de&nachname=$nachname&mitarb_passwort=$mitarb_passwort");
        exit;
    }
}

Leider funktioniert das Login dabei nicht mehr.
Zumindest werde ich nicht auf die header("location:https://www.XXXXXXXXX/index.php weitergeleitet.
Auch eine Fehlermeldung bleibt aus!
 

bdt600

Mitglied
Leider funktioniert das Login dabei nicht mehr.
Das ist eine denkbar schlechte Problembeschreibung. Leider sieht man auch keinerlei Bemühungen, mit Debug-Ausgaben und erhöhtem Error-Reporting dem Fehler auf die Spur zu kommen.

PHP:
header("location:https://www.XXXXXXXX/index.php?lg=de&nachname=$nachname&mitarb_passwort=$mitarb_passwort");
Das willst du doch hoffentlich nicht so lassen! Ein Passwort per URL weiterzureichen ist eine ganz schlechte Idee! Genau wie
PHP:
 $statement = $pdo->prepare("SELECT * FROM login WHERE email = :email");
Siehe FAQ der Newsgroups de.comp.lang.php.* - 16.14. Warum soll ich nicht SELECT * schreiben?
 

CreativPur

Erfahrenes Mitglied
Hi bd600,

ich habe über meinen Hoster "Hosteurope" alle Fehler-Script zum Aufrufen aktiviert.
Das hat bisher auch jede Fehlermeldung ausgegeben..

Ich habe aber gerade festgestellt, dass die Info

E-Mail oder Passwort war ungültig​

in der Tat unter meiner Navigation lag und somit nicht zu ersehen war.

Also mit dem 2. Passwort wird mir die Meldung "Email oder Passwort waren ungültig" angezeigt.
Bei einem Passwort funktioniert es.

ps: Mein Select habe ich auch geändert...
 

basti1012

Erfahrenes Mitglied
Kannst du deinen jetzigen Code mal posten.
Weil diese aussage
Also mit dem 2. Passwort wird mir die Meldung "Email oder Passwort waren ungültig" angezeigt.
Bei einem Passwort funktioniert es.
kann mit den Code aus post #1 ja nicht klappen , weil du beim ersten nur das Passwort abfragst und da die Fehlermeldung kommen kann.

Wo du beide Passwörter abfragst, sehe ich keine Else Verzweigung die aussagen das E-Mail falsch ist.

Und bitte ändere deinen Code , so wie es bereits gesagt wurde.
Das geht gar nicht
PHP:
header("location:https://www.XXXXXXXX/index.php?lg=de&nachname=$nachname&mitarb_passwort=$mitarb_passwort");
Passwörter nie über GET senden , dafür gibt es POST