Claudia: Session: Problem mit Kundenlogin

Hallo zusammen,

ich probiere jetzt hier seit Tagen mein Kundenlogin in den Griff zu bekommen, aber es klappt nie so wie ich es mir vorstelle.

Im Moment hab ich das Problem, dass er keine User erkennt. Es kommt immer die Meldung "Login fehlgeschlagen", obwohl die Daten in der SQL-Datenbank korrekt sind.

Kann mir da mal jemand weiterhelfen? Ich poste hier mal den Code (natürlich stark zusammengefasst):

login.php:

<form action="login_auth.php" method="post">
<input type=text name=benutzername>
<input type=password name=pass>
<input type=submit name=Submit value=Einloggen>
</form>

login_auth.php:

<?php
session_start();
session_register("benutzername");
?>
<?
include ("sqlconnect.php"); //verbindung zur DB
$ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen
if (mysql_num_rows($ergebnis)==1){ //wenn benutzername und pass übereinstimmen, dann weitermachen
    while ($row = mysql_fetch_array ($ergebnis))
    {
    echo "sie sind erfolgreich als ".$benutzername." eingeloggt.";
    }} else {
    echo "Login fehlgeschlagen.";}
?>

Also ich sehe da kein Problem... ich bin aber auch noch relativ neu im Bereich PHP/mySQL und es könnte sein, dass ich etwas übersehen habe.

LG
Claudia

  1. Hallo zusammen,

    return hallo; ;-))

    mal so ein paar fragen...:

    bist du dir sicher das dein include funktioniert?
    steht im session file wirklich der benutzname?
    hast du mal mit echo $benutzername; den inhalt geprüft?
    dto. für $pass...
    klappt dein (verborgener sql-connect)?

    gruss volker

  2. Hallo Claudia,

    <?
    include ("sqlconnect.php"); //verbindung zur DB
    $ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen
    if (mysql_num_rows($ergebnis)==1){ //wenn benutzername und pass übereinstimmen, dann weitermachen
        while ($row = mysql_fetch_array ($ergebnis))
        {
        echo "sie sind erfolgreich als ".$benutzername." eingeloggt.";
        }} else {
        echo "Login fehlgeschlagen.";}
    ?>

    ich schätze mal, der Haken ist die Bedingung
    if (mysql_num_rows($ergebnis)==1){ }

    Überprüfe, welche Ergebnisse der SQL-Select bringt und zwar unabhängig von der Anzahl der Datensätze.

    Geht am besten, wenn du dir den Select als String ausgegeben läßt und den Select z.B. über den PHP-Admin ausführst.

    Erhälst du hier Ergebnisse liegt der Fehler in der Bedingung bzw. nachfolgenden Schleife.

    Erhälst du keine, dann überprüfe mal, ob hinter dem Eintrag in der DB-Tabelle zufällig ein Leerzeichen steht bzw. im übergebenen Namen und Passwort.

    Viele Grüße

    Antje

  3. Hallo zusammen,

    ich probiere jetzt hier seit Tagen mein Kundenlogin in den Griff zu bekommen, aber es klappt nie so wie ich es mir vorstelle.

    Im Moment hab ich das Problem, dass er keine User erkennt. Es kommt immer die Meldung "Login fehlgeschlagen", obwohl die Daten in der SQL-Datenbank korrekt sind.

    session_start();
    session_register("benutzername");
    $ergebnis = mysql_query("SELECT * FROM login WHERE benutzername = '$benutzername' AND pass = '$pass'"); //benutzername und pass mit der DB vergleichen

    Dein Problem ist, daß $benutzername einmal der Name der Session-Variable ist und zum anderen der Name der Formvariablen.
    In der PHP-Standard-Einstellung hat erstere Vorrang, d.h.
    "WHERE benutzername = '$benutzername'"
    gibt Dir immer den Wert aus der Session-Variablen.
    Versuch mal

    WHERE benutzername = '$HTTP_POST_VARS["benutzername"]'