Kai Böhm: PW-Abfrage die Zweite...

Ich bin inzwischen schon weiter als heute Nacht, aber es funktioniert leider immer noch nicht so ganz.

<?
session_start();

if(isset($access))
{
 $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"])
 {
  $logon = TRUE;
  if (!(session_is_registered("logon")))
  {
   session_register("logon");
  }
 }
 else
 {
  echo "<table align=center><tr><td>Login oder Passwort ist nicht korrekt!</td></tr></table>";
 }
}

if(isset($logon))
{
 if($logon == TRUE)
 {
  echo "andere Seite";
 }
 else
 {
 ?>

<html>

<head>
  <title>TFM Setup-Verwaltung</title>
  <link rel="stylesheet" type="text/css" href="css/setup.css">
  </head>
  <body>

<form action="logon.php" method="post">
  <table cellspacing=5 align="center" valign="middle">
   <tr>
    <td>
     Login:
    </td>
    <td>
     <input type="text" name="frm_loginname">
    </td>
   </tr>
   <tr>
    <td>
     Passwort:
    </td>
    <td>
     <input type="password" name="frm_pass">
    </td>
   </tr>
   <tr>
    <td>
     <input type="reset" value="Abbrechen">
    </td>
    <td align="center">
     <input type="submit" value="Einloggen">
    </td>
   </tr>
  </table>
  </form>

<?
  if($frm_loginname == "")
  {
   die ("<table align=center><tr><td>Bitte das Login-Feld ausfüllen!</td></tr></table>");
  }
  elseif($frm_pass == "")
  {
   die ("<table align=center><tr><td>Bitte ein Passwort eingeben!</td></tr></table>");
  }
   elseif(!(strstr($frm_loginname, "@")))
  {
   die ("<table align=center><tr><td>Einloggen ist nur über die Email-Adresse möglich!</td></tr></table>");
  }
  elseif(!(strstr($frm_loginname, ".")))
  {
   die ("<table align=center><tr><td>Einloggen ist nur über die Email-Adresse möglich!</td></tr></table>");
  }
  else
  {
   $access = "ok";
  }
 }
}
?>
</body>

</html>

Ich bekomme leider immer eine leere Seite angezeigt ohne irgendwelche Fehlermeldungen.

  1. session_start();

    Also ich täte für sowas ja die HTTP-Variante benutzen, da braucht funktioniert's automatisch, garantiert und braucht keine Sessions.

    if(isset($access))

    $access wird nie gesetzt (siehe unten).

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

    Bei Benutzereingaben IMMER mysql_escape_string() einsetzen. Außerdem solltest Du externe Variablen wie die Formulardaten besser über $HTTP_POST_VARS[] bzw. seit einer ganzen Weile über $_POST[] abfragen.

    $query = "select email,pass from member where email='".mysql_escape_string($_POST["frm_loginname"])."'";

    $erg = mysql_query($query, $dbh);

    Wo ist die Fehlerbehandlung?

    $row = mysql_fetch_array($erg);

    Wo ist die Fehlerbehandlung?

    if(isset($logon))

    $logon wird im obigen if-$access-Block gesetzt..

    {

    [..]

    $access = "ok";
    }

    ..und $access im if-$logon-Block. Wer kann nun wohl zuerst da sein, die Henne oder das Ei?

    Gruß,
      soenk.e