User mit Vorname und Nachname ansprechen

  • Hallo ein zehntes mal :whistling: ,


    Wollte mal Fragen wie ihr es machen würdet den User mit Nachnamen und Vornamen anzusprechen nach erfolgreichem Login.


    Habe es zurzeit so gemacht ist aber bissl bescheurt da man sich nur mit der email einloggen soll und nicht auch mit dem Vornamen. (Habe in dem Beispiel nur den Vornamen benutzt)


    [PHP]
    public function login($email,$password $vorname)
    {
    try
    {
    $stmt = $this->db->prepare("SELECT email,password,vorname FROM user_daten WHERE email = :email OR :vorname");
    $stmt->execute(array(':email'=>$email, ':vorname'=>$vorname));
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
    if($stmt->rowCount() > 0)
    {
    if(password_verify($password, $userRow['password']))
    {
    $_SESSION['email'] = $userRow['email'];
    $_SESSION['vorname'] = $userRow['vorname'];
    return true;
    }
    else
    {
    return false;
    }
    }
    }
    catch(PDOException $e)
    {
    echo $e->getMessage();
    }
    }
    [/PHP]


    Ich wusste nicht wie ich vorname mit einem Platzhalter verwenden sollte.


    Nach dem Login erfolgreich war könnte ich easy den User so ansprechen: Willkommen $_SESSION['vorname']. Nur das muss ich hier irgendwie anders machen.

  • Warum sollte man sich mit Vornamen einloggen können?
    Ich finde es schon schlimm, wenn man sich mit der eMail einloggen kann/muss. (ich raff es nicht, warum das bei "den Großen" wie FB, google und co so gemacht wird)


    Ich würde es nicht empfehlen, den Vornamen für den Login zu verwenden.


  • Einfach wegen der Mehr-Information - mit der eMail weiß "man" gleich 2 Sachen: eMail und Login-Name.
    Es ist auch wahrscheinlicher, dass jemand die gleiche eMail auf anderen Seiten nutzt, als einen Nickname.


    (Und Kleinigkeiten wie zB Smartphone-login -- email eingeben ... nervt.)

  • Ja aber man soll sich ja nicht mit dem Vornamen einloggen können, das meinte ich ja. Das sollte ne Probe sein damit der User sich später ein Nicknamen erstellt. Nur muss ich erstmal probieren ob ich den Sinn verstehe wie ich es mache und es funktoniert. Im Script von dir kann man sich ja mit vorname und email einloggen, man sollte sich ja aber nur mit der mail einloggen.

  • @cotton mit input[type=email] ist das auch easy.. Aber das selbe nickname Problem ist nur Sicherheitstechnisch eines..
    Denn der Nutzer tut sich leichter seine Email zu merken als 1000 nicknames.. wobei er dann sowieso nur 2-3 standart-nicknames haben wird (schließen wir mal den kleinen Prozentsatz der Sicherhritsbewussten Nutzer aus) und somit das Problem des gleichen 1.Faktors der Authentifizierung besteht, nur komplizierter für den Nutzer, richtig?


    @strong ... was, wenn du zwei Nutzer mit selbem Vornamen hast?

  • Sry das ich mich nicht deutlicher ausgedruckt habe. Nickname meine ich eigenen Benutzername, (falls ich die Email weglasse).


    @cotton , ich habs reingenommen weil ich nicht wusste wie ich es machen sollte, und dies hat als einzigstes funktoniert. Nur Problem war das man sich auch halt mit dem Vornamen einloggen kann.


    Was ich möchte:


    z.B ich melde mich irgendwo an gebe meinen vornamen und nachnamen an. Dann wenn alles geklappt hat soll z.B in der nächsten Seite stehen. Willkommen "Vorname & Nachname" mit einer SESSION.

  • Na dann brauchst Du doch aber den :vorname nicht in der WHERE-Bedingung.
    Login per eMail und PW. Die Query änderst Du in der Hinsicht, dass Du mehr auswählst (SELECT)
    Vorschlag:


    EDIT: Fehlerbeseitigung

  • Tolle erklärung, verstehe es auch jetzt, aber muss es nicht $row['password'] etc heißen?


    2. Der findet die Daten nicht


    login.php


    PHP
    if(isset($_POST['btn-login'])) {
    		$email = $_POST['txt_mail'];
    		$password = $_POST['txt_password'];
    
    		if($user->login($email,$password)) {
    			$user->redirect('home.php');
    		} else {
    		$error = "Falsche Daten";
    		}
    	}


    3. Habe im Script das mit ':vorname'=>$vorname weggemacht weil es sonst eine Fehlermeldung erzeugt. Falls ich es einfüge:


  • Passiert^^.


    So jetzt loggt der sich ein aber i-was spinnt immer noch. In meiner home.php steht drin:

    PHP
    if(!isset($_SESSION['email'])) {
    header ("Location: page.php");
    }


    Einloggen klappt aber werde direkt zu page.php weitergeleitet. Das heißt so wie, session['email'] gibt es nicht aber daten waren richtig.


    €: Wieso heißt das $user['password'] ? und nicht $row['password'] ? Falls ich $row['password'] mache steht da undefined variable row

  • Weil der Rückgabewert von $this->getUserByEmail($email) in $user gepackt wird.
    $user = $this->getUserByEmail($email);
    Du kannst die Variable natürlich auch umbenennen.


    Was ist/passiert in page.php? Soll man dort hin, wenn man sich eingeloggt hat?
    (Thema Benennung - page.php sagt nix aus =) )


    Zitat

    Das heißt so wie, session['email'] gibt es nicht aber daten waren richtig


    8| Stell den Glühwein weg 8o


    Zitat

    Einloggen klappt aber werde direkt zu page.php weitergeleite


    Ja, muss ja. Denn Wenn Login klappt, wird doch $_SESSION['email'] gesetzt.


    Btw: würde nicht nur auf isset prüfen, sondern auch, ob die session email nicht leer ist.
    Warum: wenn $_SESSION['email'] mal FALSE ist, dann ist es auch gesetzt.

Jetzt mitmachen!

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