Problem Login, findet password nicht.

  • Guten Tag,


    mein Script sagt mir immer die Fehlermeldung: Email oder Passwort nicht gefunden. Die Daten habe ich richtig eingeben(Falls Kommentar kommt das ich ggf. die Daten nicht richtig angegeben habe).


    Hier das Scirpt:



    [PHP]
    <?php
    session_start();


    if(isset($_POST['submit'])) {


    require_once "sec/verbindung.inc.php";


    $errMsg = '';

    $email = $_POST['email'];
    $password = $_POST['password'];

    if($email == '')
    $errMsg .= 'Bitte trage deine Email ein';


    if($password == '')
    $errMsg .= 'Bitte trage dein Passwort ein';

    if($errMsg == '') {
    $records = $verbindung->prepare('SELECT id,email,password FROM user_datas WHERE email = :email');
    $records->bindParam(':email', $email);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);
    if(count($results) > 0 && password_verify($password, $results['password'])) {
    $_SESSION['email'] = $results['email'];
    header('location:dashboard.php');
    exit;
    } else {
    $errMsg .= 'Email oder Password nicht gefunden';
    }
    }
    }
    ?>


    <?php
    if(isset($errMsg)){
    echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
    }
    ?>
    <form action="" method="POST">
    <p><input type="email" name="email" placeholder="E-Mail Adresse"></p>
    <p><input type="password" name="password" placeholder="Passwort"></p>
    <p><input type="submit" name="submit"></p>
    </form>
    [/PHP]


    Habe auch nachgeschaut.


    Es liegt hier dran:
    && password_verify($password, $results['password'])
    Denn, wenn ich es entferne gehts aber macht ja auch kein Sinn ohne Passwort sich einzuloggen.


    Problem 2:


    Wenn ich z.B
    inlcude "functions.php"; in einem Script schreibe mit richtigem Pfad dann funktonieren die Funktionen nicht. Er zeigt mir immer
    Call to a member function login() on a non-object in /users/varez-data/www/homepage/log/index.php on line 15

  • Zitat

    Es liegt hier dran:
    && password_verify($password, $results['password'])
    Denn, wenn ich es entferne gehts aber macht ja auch kein Sinn ohne Passwort sich einzuloggen.


    1. wie hasht Du denn das Passwort? Wenn Du an die Passwörter noch einen eigenen Wert anhängst, musst Du den natürlich auch beim password_verify verwenden.
    2. Ist die Zeile password in Deiner DB auch lang genug? Wenn sie nicht lang genug ist und der Vorgang nicht abgebrochen wird, wird ein gekürzter = falscher Hashwert gespeichert. Ergo wird jeder Versuch das Passwort zu prüfen fehlschlagen.


    Zitat

    inlcude "functions.php"; in einem Script schreibe mit richtigem Pfad dann funktonieren die Funktionen nicht. Er zeigt mir immer
    Call to a member function login() on a non-object in /users/varez-data/www/homepage/log/index.php on line 15


    Wäre hilfreich, wenn Du die functions.php auch zeigst, dann könnte man Dir vielleicht sagen wo der Fehler liegt.

  • Sind in Deinem Passwort Sonderzeichen? Wie < > & o.Ä?
    Dann wird es nicht funktionieren, weil Du beim registrieren das passwort mit htmlspecialchars bearbeitest. Entweder musst Du das auch bei der Anmeldung machen oder bei der Registrierung weglassen.
    Ansonsten, hash das passwort vielleicht nochmal neu und speicher es neu ab. Was anderes seh ich gerade nicht.

  • Dann wird es nicht funktionieren, weil Du beim registrieren das passwort mit htmlspecialchars bearbeitest.


    Wo siehst Du denn das?
    Ich seh da nix im code.


    Aber sonst stimme ich zu.
    Am besten beim Verbinden mit der db strict tables verwenden:

    SQL
    -- connect to db
    ...
    -- set strict mode
    sql_mode = 'STRICT_ALL_TABLES'; -- einfach erklärt: wenn feld 10 zeichen lang ist, du aber 11 sendest, dann bekommst du einen fehler (so wie es sein sollte)
    -- und am besten noch:
    SET CHARSET 'utf8'; 
    NAMES 'utf8';


    guck mal im Forum -- hatten das Thema schon öfter.


    Thema Passwort: niemals das pw bearbeiten oder was auch immer.
    Das Passwort kommt vom User über das Input-Feld bis hin zu $_POST['pw...'].
    Und so wie es ankommt, sollte es auch verwendet (gespeichert) werden.
    Selbst wenn ein Leerzeichen am Anfang/Ende ist -- es ist das, was der User wollte/eingegeben hat.
    (Ich sag nur epic kack-noobs sparkasse -- die schneiden ohne Meldung alles nach 6 Zeichen ab)

  • Code
    Wo siehst Du denn das?
    Ich seh da nix im code.


    Er hatte noch einen Beitrag (jetzt gelöscht), wo er seine Registtrations.php zeigte, dort hat er das Passwort mit htmlspecialchars bearbeitet, was er beim Login aber nicht tut.


    Code
    Selbst wenn ein Leerzeichen am Anfang/Ende ist -- es ist das, was der User wollte/eingegeben hat.


    Bei Leerzeichen bin ich persönlich anderer Meinung. Kommt ja vor, dass man versehentlich ein Leerzeichen am Anfang stehen hat und es nicht merkt, schon weiß der User sein Passwort nicht mehr. Ich würde eher drauf hinweisen, dass Leerzeichen am Anfang/Ende nicht unterstützt werden und sie entfernen. Da beugt man Problemen gleich vor und m.E dürfte es auch niemanden stören. Aber das muss wahrscheinlich jeder selbst entscheiden.

  • Sorry für das 'nochmalige' reinschreiben aber habe jetzt das gleiche Problem und sitze locker seit einer Stunde dran doch finde nix. Es hat geklappt mt den Login , habe eine andere DB genommen aufeinmal klappt es nicht mehr. Ich habe die Tabellen etc kontrolliert , habe sogar ein test gemacht mit PDO::FETCH_ASSOC ob die Einträge gefunden werden + var_dump($_POST['email'] etc alles klappt er findet alles doch er zeigt mir falsche Daten an, obwohl es vorher ging. Bin grad total verwirrt...



    DB_TABELLE:
    (id)
    (email)
    (password)


    class.user.php



    dbconfig.php

    PHP
    <?php
    session_start();
    include 'sec/verbindung.inc.php';
    include  'class.user.php';
    $user = new USER($DB_con);
    ?>


    login.php


    PS: Die Account-Daten habe ich ungehasht gemacht. d.h


    example: mail = testmail@live.de , pw: hallo123456 (Kein Hash/Keine htmlspecialchars etc)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!