Kai: Problem mit PW-Abfrage Script

Ich hänge beim nachfolgenden Script fest, irgendwie läuft die Bedingung immer zum letzten Else, ich weiß aber nicht wo der Fehler liegt, vielleicht kann mir da ja jemand helfen.

<?
include ("db_connect.inc");
include ("library.inc");

$query = "select email, pass from member where (email = '$frm_loginname')";
$erg = mysql_query($query, $dbh);

if($frm_loginname == $erg["email"])
{
 if($frm_pass == $erg["pass"])
  {
    echo "Eingabe korrekt";
  }
  else
  {
    echo "Passwort ist falsch";
  }
}
else
{
  echo "Username ist falsch";
}

?>

Ist nur meine If-Bedingung falsch? Mit mysql_fetch_array($erg) kann ich mir die Daten nämlich anzeigen lassen.

Viele Grüße

Kai

  1. Hallo!

    <?
    $query = "select email, pass from member where (email = '$frm_loginname')";
    $erg = mysql_query($query, $dbh);

    if($frm_loginname == $erg["email"])

    das prüfst Du doch schon in der SQL-Query!

    {
    if($frm_pass == $erg["pass"])
      {
        echo "Eingabe korrekt";
      }
      else
      {
        echo "Passwort ist falsch";
      }
    }
    else
    {
      echo "Username ist falsch";
    }

    ?>

    Ist nur meine If-Bedingung falsch? Mit mysql_fetch_array($erg) kann ich mir die Daten nämlich anzeigen lassen.

    ;-)
    mysql_fetch_array($erg) brauchst Du natürlich _immer_ , denn $erg ist eine Recource und kein Array wie mysql_fetch_array().

    Mach sowas wie

    $query = "select email, pass from member where (email = '$frm_loginname')";
    $erg = mysql_query($query, $dbh);
    $row = mysql_fetch_array($erg);

    if($frm_pass == $row["pass"]) {
        echo "Eingabe korrekt";
    }
    else {
        echo "Eingabe faslch";
    }

    Grüße
    Andreas

    1. Hallo,

      wenn ich das hier richtig interpretiere, geht es um die Überprüfung von Login-Daten. Stimmt das?

      Gut, dann würde ich die where-Klausel gleich so auslegen, dass Username UND Passwort gecheckt werden. Wenn das gültige Query (sollte man auch überprüfen) dann genau eine Zeile liefert (mysql_num_rows($res)==1), dann wurde ein User-Passwort-paar gefunden.

      <?php

      function UserCheck(.....)
      {
        $query = "select ID from member where (email='$frm_loginname') and pass='$frm_pass')";
        if ($query)
        {
          if (mysql_num_rows($query)
          {
            return true;
          }
          else return false;
        }
        else die("Fehler: $mysql_error($dbconn)");
      }

      ?>

      Alternativ kann man sich natürlich auch gleich die ID und ggf. die statische Sessionnummer zurückgeben lassen, um eine Session wieder aufzubauen.

      Liebe Grüße aus http://www.braunschweig.de

      Tom