Beiträge von strong97

    Hab's nach einer halben Stunde nach dem Therad auch gelöst^^ hatte es aber so gemacht:



    Oder doch lieber die ID verwenden.?

    Hallo,


    überschrift sagt alles. Habe in der DB eine Tabelle namens "world-coins" erstellt INT( 8 ) und bei "Wie defeniert" auf 0 geschrieben.


    So habe nun von einem User die Coins auf 250 gestellt aber er zeigt mir trotzdem 0 an.


    Falls der User eingeloggt ist, dann selectiere die Coins:



    Woran liegt es


    [Blockierte Grafik: http://fs5.directupload.net/images/151227/temp/svkkcmgh.png]


    €:Falls ich bei SELECT die ` ` oberen Striche wegmache erscheint diese Fehlermeldung: Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'world' in 'field list' )

    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

    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:


    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.

    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.

    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.

    Nutze Pdo. Habe es geschafft nur es ist etwas komisch.


    Er soll ja den Error zeigen wenn es falsch ist und das Programm abbrechen. Er tut es aber nicht sondern bei true tut er es.



    Wieso bei true?

    Also müsste ich es so schreiben:


    [PHP]
    $email = $_POST['email'];
    $password = $_POST['password'];
    $vorname = $_POST['vorname'];
    $nachname = $_POST['nachname'];


    $error = '';


    function check($email) {
    include 'sec/verbindung.inc.php';
    $stmt = $DB_con->prepare("SELECT email FROM user_daten WHERE email = ?");
    $stmt->BindValue(1, $email);
    $stmt->execute();


    if($stmt->rowCount() > 0) {
    return true;
    } else {
    return false;
    }
    }


    if(check($email) === false) {
    $error = 'Email existiert';
    }
    [/PHP]


    Habe die Strings mit ' ' geschrieben und die vorbereitungen mit " ". Falls es so richtig ist , dann funktoniert ist nicht.
    Falls du dich fragst wieso ich in der Function wieder eine DB verbindung habe:
    Wenn ich dies wegmache dann steht da undefined Variable stmt und undefined method prepare, d.h er findet keine Verbindung.

    1. Danke für die Mühe und die tolle Erklärung!


    2. Wegen der Platzierung der function, ich habe die einfach irgendwo reingequetscht , das sollte alles nur ein Test sein ob es wirklich klappt. Bei Erfolg wollte ich dies dann auch umändern. Deswegen auch keine Platzhalter etc benutzt.


    3. Das mit dem PHP war ein fehler den ich vergessen habe weg zu machen :D sollte nicht stehen



    €:

    Zitat

    ("du hast also immer abgefragt: gibt mir email von user_daten wo email $email ist =)
    // ergo: immer 0 (keine) einträge gefunden)


    Wie sollte ich es dann schreiben?


    Habe es so gemacht, (mit dem gleichen Fehler aber dieses mal mit platzhalter)



    [PHP]
    function check($email) {
    $stmt = $DB_con->prepare("SELECT email FROM user_daten WHERE email = ?");
    $stmt->BindValue(1, $email);
    $stmt->execute();


    if($stmt->rowCount() > 0) {
    return true;
    } else {
    return false;
    }
    }


    if(check($email) === false) {
    $error = 'Email existiert';
    }
    [/PHP]

    hey,


    ich habe kurz eine function geschrieben, doch ich habe irgendwas falsch gemacht. Weil er zeigt mir auch bei erfolgreicher Registrierung den Fehler 'Email existiert'.


    [PHP]
    <?php
    require_once 'dbconfig.php';
    <?php
    if(isset($_POST['senden']) && strtolower($_POST['senden'])) {

    if(strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') {

    $email = htmlentities($_POST['email'], ENT_QUOTES, "UTF-8");
    $password = $_POST['password'];
    $vorname = htmlentities($_POST['vorname'], ENT_QUOTES, "UTF-8");
    $nachname = htmlentities($_POST['nachname'], ENT_QUOTES, "UTF-8");


    $error = '';


    function check($email) {
    include 'sec/verbindung.inc.php';
    $sql = 'SELECT email FROM user_daten WHERE email = $email';
    $stmt = $DB_con->prepare($sql);
    $check_row = $stmt->fetch(PDO::FETCH_ASSOC);


    if($stmt->rowCount() > 0) {
    return true;
    } else {
    return false;
    }
    }

    if(check($email) === false) {
    $error = 'Email existiert';
    }


    if(!$error) {

    $insert = $DB_con->prepare("INSERT INTO user_daten (email, password, vorname, nachname) VALUES (?, ?, ?, ?");
    $insert->BindValue(1, $email);
    $insert->BindValue(2, password_hash($password, PASSWORD_BCRYPT, $option));
    $insert->BindValue(3, $vorname);
    $insert->BindValue(4, $nachname);
    if($insert->execute()) {
    exit("<article id='erfolg_insert'><section id='content'><p class='susc_reg'>Sie haben erfolgreich einen Account erstellt.</p> <br> <p class='after_reg'><a href='login.php' class='now_log_after_reg'>Jetzt Einloggen</a></p> </section></article><?php");
    }
    }
    }
    }
    ?>
    <article id="a1-reg">
    <section id="content">
    <h2 class="h2-reg"> Registrieren </h2>
    <h3 class="h3-reg"> Kostenlos und schnell Registrieren </h3>
    <p class="genericon genericon-user"></p>
    </section>
    </article>

    <article id="a2-reg">
    <section id="content">
    <form action="<?php $_SERVER['REQUEST_METHOD']?>" method="POST">


    <?php if(isset($error)) { ?>
    <article id='error_info'>
    <section id='content'>
    <?php echo $error; ?>
    </section>
    </article>
    <?php } ?>

    <p><input type="email" name="email" placeholder="E-Mail Adresse"> <input type="email" name="atmail-g" placeholder="E-Mail Adresse Wiederholen"></p>
    <p><input type="password" name="password" placeholder="Passwort"> <input type="password" name="psw-g" placeholder="Passwort Wiederholen"></p>
    <p><input name="vorname" placeholder="Ihr Vorname"> <input name="nachname" placeholder="Ihr Nachname"></p>
    <p class="info-agb"> Beim Senden der Registration stimmen Sie automatisch der <a href="#" class="agb"> AGB</a> zu.</p>
    <p><input type="submit" class="send" value="Senden" name="senden"> <input type="reset" class="reset" value="Zur&uuml;cksetzen"></p>
    </section>
    </article>


    </main>
    </body>
    </html>
    [/PHP]


    War jetzt nur ein Beispiel hab oft die Codes verändert etc. nach halber/einer Stunde ging mir die Lust weg..

    Wie man im Bild sieht sind die Icons etwas noch oben verschoben. DIe sind nicht in einer Linie mit dem Text.


    HTML
    <nav class="navigation">
    		<ul>
    		<li><a href="#"><span class="genericon genericon-user"></span>Register</a></li>
    		<li><a href="#"><span class="genericon genericon-lock"></span>Login</a></li>
    		</ul>
    		</nav>


    Quelltext: Nav


    Icon


    CSS
    .genericon-user:before { content: "\f304"; }